2026/3/24 21:09:07
网站建设
项目流程
网站建设培训学校,甘肃省建设工程造价信息网站,的wordpress主题,1)_童装网站建设目标目录
常见的垃圾回收器
串行垃圾收集器
并行垃圾收集器
并发垃圾收集器
总结
CMS的介绍
G1的介绍
特点
四个阶段 常见的垃圾回收器
并行#xff08;Parallel#xff09; #xff1a;指多条垃圾收集线程并行工作#xff0c;但此时用户线程处于STW状态。
并发Parallel指多条垃圾收集线程并行工作但此时用户线程处于STW状态。并发Concurrent指用户线程与垃圾收集线程同时执行用户线程绝大部分时间是运行状态。可能会出现极短时间的STW状态串行垃圾收集器Serial读音西瑞哦收集器复制算法):新生代单线程收集器标记和清理都是单线程优点是简单高效全程STWSerial Old收集器 (标记-整理算法):老年代单线程收集器Serial收集器的老年代版本全程STW并行垃圾收集器ParNew读音帕尔纽收集器 (复制算法): 新生代收并行集器实际上是Serial收集器的多线程版本在多核 CPU环境下有着比Serial更好的表现全程STWParallel Scavenge读音帕瑞勒 斯凯文吉收集器 (复制算法): 新生代并行收集器追求高吞吐量高效利用 CPU全程STWParallel Old收集器 (标记-整理算法) 老年代并行收集器吞吐量优先Parallel Scavenge收集器的老年代版本全程STW并发垃圾收集器CMS(Concurrent Mark Sweep)收集器标记-清除算法 老年代并发收集器以获取最短回收停顿时间为目标的收集器具有并发收集、低停顿的特点追求最短GC回收停顿时间。G1(Garbage First)收集器 (标记-整理算法) Java堆并行收集器G1收集器是JDK1.7提供的一 个新收集器G1收集器基于“标记-整理”算法实现也就是说不会产生内存碎片。此外G1收集器不同于之前的收集器的一个重要特点是G1回收的范围是整个Java堆(包括新生代老年代)而前六种收集器回收的范围仅限于新生代或老年代。总结新生代收集器Serial、 ParNew 、 Parallel Scavenge老年代收集器 CMS 、Serial Old、Parallel Old整堆收集器 G1CMS的介绍CMS是老年代并发垃圾收集器, 采取标记清除算法, 追求最短GC回收停顿时间, 优点是并发收集, 低停顿.CMS 处理过程有四个步骤初始标记指的是寻找所有被 GCRoots 引用的对象该阶段需要STW。这个步骤仅仅只是标记一下 GC Roots 能直接关联到的对象并不需要做整个引用的扫描因此速度很快。并发标记指的是对「初始标记阶段」标记的对象进行整个引用链的扫描该阶段与用户线程同时运行, 不需要STW重新标记指的是对「并发标记」阶段出现的问题进行校正该阶段需要STW.由于垃圾回收算法和用户线程并发执行虽然能降低响应时间但是会发生漏标存活对象被标为垃圾和多标垃圾对象被标为存活的问题。并发清除指的是将标记为垃圾的对象进行清除该阶段与用户线程同时运行, 不需要STW.CMS 之所以能极大地降低 GC 停顿时间本质上是将原本冗长的引用链扫描进行切分。通过 GC 线程与用户线程并发执行加上重新 标记校正的方式减少了垃圾回收的时间。CMS缺点多线程并发处理, 吃CPU资源无法处理浮动垃圾, 在 CMS 进行并发清理的时候用户线程同时在运行也会产生一些浮动垃圾。采用标记清除算法会产生空间碎片G1的介绍特点同时注重吞吐量(Throughput)和低延迟(Low latency)将堆内存化整为零会将堆划分为多个大小相等的Region, 内存的回收是以region作为基本单位的Region是 G1 垃圾收集器的核心设计概念。简单说Region 是 G1 将整个堆内存划分成的大小相等的内存块这是 G1 与之前所有收集器的根本区别。整体上看是标记整理算法微观上看两个区域之间是复制算法四个阶段初始标记 需要STW)标记了从GC Root开始直接关联可达的对象并发标记不需要STW在老年代占用堆空间比例到达阈值时, 从GC Root开始对堆中对象进行可达性分析, 递归扫描整个堆里的对象图, 标记出所有回收对象和用户程序并发执行, 不会STW最终标记 需要STW由于并发标记阶段允许用户线程工作可能会出现漏标错标问题使用SATB算法处理漏标问题错标允许存在下次回收即可确定本次要回收的Region集合筛选回收 需要STW先对Region的回收价值进行排序然后根据期望暂停时间选择性回收Region不追求一次全部清理完, 优先回收垃圾最多的区域回收时采用复制算法多条收集器线程并发执行