垃圾收集算法:
标记清除:标记和清除的效率都不高、产生碎片;
复制:代价高只能用到一半内存(新生代中使用,Eden:Survicor:Survicor=8:1:1);
标记-整理:老年代使用;
垃圾收集器:
Serial(client模式下的默认新生代收集器):
缺点:单线程且会停止所有工作线程;
优点:简单高效;
ParNew(Serial的多线程版本,server模式下的默认新生代收集器):
缺点:在单核场景下性能不如Serial;
优点:能和CMS收集器配合工作;
Parallel Scavenge(类似ParNew,关注吞吐量):
缺点:不能和CMS收集器配合工作;
优点:可以设置停顿间隙以及吞吐量、有自适应调节策略;
CMS(关注用户线程停顿时间)
Serial Old:Serial的老年代版本,使用标记整理算法,主要client模式下使用,并且可作为CMS的后备方案,在并发收集发送Concurrent Mod Failure的时候使用。
Parallel Old:JDK1.6才开始提供,配合Parallel Scavenge达到吞吐量优先的效果。
CMS:一种以最短回收停顿时间为目标的收集器,使用标记清除算法。分初始标记、并发标记、重新标记、并发清除四个阶段,其中第1和3需要停顿用户响应;
优点:并发收集、低停顿;
缺点:对CPU资源非常敏感、无法处理浮动垃圾可能出现Concurrent Mod Failure导致Full GC、产生内存碎片;
G1收集器:JDK1.6.14以后才提供,比CMS有两个明显改进:基于“标识-整理”算法、精确控制停顿。
内存分配和回收策略:对象优先在Eden区分配,大对象和长期存活的对象直接进去老年代;
JVM垃圾收集
原创
©著作权归作者所有:来自51CTO博客作者古道卿的原创作品,请联系作者获取转载授权,否则将追究法律责任
上一篇:一个码农的工作总结
下一篇:阻塞算法和非阻塞算法对比
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
JVM的垃圾收集算法
介绍分代收集理论和几种垃圾收集算法(标记-清除、标记-复制、标记-整理)的思想及其发展过程。
分代收集理论 垃圾收集算法 标记清除算法 标记复制算法 标记整理算法 -
JVM--Java垃圾收集--内存模型/垃圾收集流程
本文介绍Java各个代的关系(内存模型)及垃圾收集流程。
java 内存空间 内存模型 垃圾收集