本文共 796 字,大约阅读时间需要 2 分钟。
垃圾收集算法:
标记清除:标记和清除的效率都不高、产生碎片; 复制:代价高只能用到一半内存(新生代中使用,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区分配,大对象和长期存活的对象直接进去老年代;本文转自 古道卿 51CTO博客,原文链接:http://blog.51cto.com/gudaoqing/1424173
转载地址:http://mgpia.baihongyu.com/