现在的位置: 首页 > 算法 > 正文

垃圾收集器与内存分配

2020年01月07日 算法 ⁄ 共 1073字 ⁄ 字号 评论关闭

  GC线程与应用线程保持相对独立,当系统需要执行垃圾回收任务时,先停止工作线程,然后命令GC线程工作。以串行模式工作的收集器,称为串行收集器(即SerialCollector)。与之相对的是以并行模式工作的收集器,称为并行收集器(即ParallerCollector)。

串行收集器:Serial

  串行收集器采用单线程方式进行收集,且在GC线程工作时,系统不允许应用线程打扰。此时,应用程序进入暂停状态,即Stop-the-world。

  Stop-the-world暂停时间的长短,是度量一款收集器性能高低的重要指标。

  是针对新生代的垃圾回收器,基于标记-复制算法

并行收集器:ParNew

  并行收集器充分利用了多处理器的优势,采用多个GC线程并行收集。可想而知,多条GC线程执行显然比只使用一条GC线程执行的效率更高。一般来说,与串行收集器相比,在多处理器环境下工作的并行收集器能够极大地缩短Stop-the-world时间。

  针对新生代的垃圾回收器,标记-复制算法,可以看成是Serial的多线程版本

吞吐量优先收集器:ParallelScavenge

  针对新生代的垃圾回收器,标记-复制算法,和ParNew类似,但更注重吞吐率。在ParNew的基础上演化而来的ParallelScanvenge收集器被誉为“吞吐量优先”收集器。吞吐量就是CPU用于运行用户代码的时间与CPU总消耗时间的比值,即吞吐量=运行用户代码时间/(运行用户代码时间垃圾收集时间)。如虚拟机总运行了100分钟,其中垃圾收集花掉1分钟,那吞吐量就是99%。

  ParallelScanvenge收集器在ParNew的基础上提供了一组参数,用于配置期望的收集时间或吞吐量,然后以此为目标进行收集。

G1收集器

  G1重新定义了堆空间,打破了原有的分代模型,将堆划分为一个个区域。这么做的目的是在进行收集时不必在全堆范围内进行,这是它最显著的特点。区域划分的好处就是带来了停顿时间可预测的收集模型:用户可以指定收集操作在多长时间内完成。即G1提供了接近实时的收集特性。

ParallelOld收集器

  ParallelOld是ParallelScanvenge收集器的老年代版本,多线程收集器,使用标记-整理算法。

SerialOld收集器

  SerialOld是Serial收集器的老年代版本,单线程收集器,使用标记-整理算法。这个收集器的主要意义也是在于给Client模式下的虚拟机使用。

  结束语:以上就是关于垃圾收集器与内存分配的全部内容,更多内容请关注学步园。

抱歉!评论已关闭.