垃圾收集器

1、Serial (串行)收集器:单线程收集器,会停掉应用程序的线程。程序会假死

新生代复制算法,老年代采用标记-整理算法。

2、ParNew收集器:多线程收集器,还是会停止应用程序的线程

3、Parallel Scavenge (JDK8 默认):Server 模式,内存大于2个G,2个cpu,关注点事吞吐量,高效率的利用CPU

CMS关注点事用户线程的停顿时间(提高用户体验)
吞吐量:CPU运行用户代码的时间与CPU总消耗时间的比值。
 

概念:

并行:多个垃圾收集线程一起工作,但此时用户线程依然处于等待状态,适合后台处理弱等弱交互场景。
并发:要好过户线程与垃圾收集线程同时执行,用户程序在继续运行,而垃圾收集器运行在另一个CPU
(可能会交替执行,适合Web应用)

CMS收集器: 并发收集器。第一次让应用程序和GC同时工作。
缺点:对CPU比较敏感,会和服务抢资源。
           无法处理浮动垃圾。

jinfo -flags 14036


4、G1 可以收集更大的内存,针对多个处理器,大容量内存的机器。
  G1将 Java 堆划分为多个大小相等的独立区域(Region),
Humongous 存放短期巨型对象。不用直接进老年代,避免FulllGc 大量开销

G1 与CMS的区别:

G1建立可预测的停顿时间,比如10ms,根据用户所期望的GC停顿时间来制定回收计划。
G1不是FullGC 而是MixedGc

 

 

 

你可能感兴趣的:(Java虚拟机)