网站收录原创文章,百度账号设置,做简单网站的框架图,个人做企业网站如果说垃圾收集算法是内存回收的方法论#xff0c;那么垃圾收集器就是内存回收的具体实现。下图展示了7种作用于不同分代的收集器#xff0c;其中用于回收新生代的收集器包括Serial、ParNew、Parallel Scavenge#xff0c;回收老年代的收集器包括SerialOld、Parallel Old、C…如果说垃圾收集算法是内存回收的方法论那么垃圾收集器就是内存回收的具体实现。下图展示了7种作用于不同分代的收集器其中用于回收新生代的收集器包括Serial、ParNew、Parallel Scavenge回收老年代的收集器包括SerialOld、Parallel Old、CMS还有用于回收整个Java堆的G1收集器。不同收集器之间的连线表示它们可以搭配使用。 Serial收集器复制算法): 新生代单线程收集器标记和清理都是单线程优点是简单高效 ParNew收集器 (复制算法): 新生代并行收集器实际上是Serial收集器的多线程版本在多核CPU环境下有着比Serial更好的表现 Parallel Scavenge收集器 (复制算法): 新生代并行收集器追求高吞吐量高效利用 CPU。吞吐量 用户线程时间/(用户线程时间GC线程时间)高吞吐量可以高效率的利用CPU时间尽快完成程序的运算任务适合后台应用等对交互相应要求不高的场景 Serial Old收集器 (标记-整理算法): 老年代单线程收集器Serial收集器的老年代版本 Parallel Old收集器 (标记-整理算法) 老年代并行收集器吞吐量优先Parallel Scavenge收集器的老年代版本 CMS(Concurrent Mark Sweep)收集器标记-清除算法 老年代并行收集器以获取最短回收停顿时间为目标的收集器具有高并发、低停顿的特点追求最短GC回收停顿时间。 G1(Garbage First)收集器 (标记-整理算法) Java堆并行收集器G1收集器是JDK1.7提供的一个新收集器G1收集器基于“标记-整理”算法实现也就是说不会产生内存碎片。此外G1收集器不同于之前的收集器的一个重要特点是G1回收的范围是整个Java堆(包括新生代老年代)而前六种收集器回收的范围仅限于新生代或老年代。
收集器工作方式描述回收区域算法特点Serial串行工作线程暂停一个线程进行垃圾回收新生代标记-复制Serial Old串行工作线程暂停一个线程进行垃圾回收老生代标记-整理ParNew并行工作线程暂停多个线程进行垃圾回收新生代标记-复制Serial 的多线程版本CMS并行用户和垃圾回收线程同时进行老生代标记-清除低暂停Parallel Scavenge并行工作线程暂停一个线程进行垃圾回收新生代标记-复制和 ParNew 相比能动态调整内存分配 jdk8默认Parallel Old并行工作线程暂停多个线程进行垃圾回收老生代标记-整理替代串行的 Serial OldG1并行用户和垃圾回收线程同时进行整堆分区算法延迟可控的情况下尽量提高吞吐量 jdk9默认ZGC并行用户和垃圾回收线程同时进行整堆分页算法暂停时间不超过1ms