您的位置:首页 > 编程语言 > Java开发

java jvm gc 垃圾回收机制 总结

2017-09-18 10:53 603 查看

垃圾回收方法(算法,垃圾收集器)

前提

jdk1.8以上(已经无永久代(Permanent Generation (PermGen),变成元空间(Metaspace))

算法

基础算法

复制算法(新生代使用)

标记-清除算法(一般老生代使用)

标记-整理算法(一般老生代使用)

分代收集算法(Generational Collection),就是平时我们总说的gc

新生代一般使用复制算法,老生代一般使用标记-整理算法,元空间(过阀值就收集)

分代收集算法(Generational Collection)垃圾收集器怎么区分

是单线程还是多线程?

阶段不同?

是否Stop The Word ?(业务线程是否停止)

垃圾收集器几个问题

是新生代,老生代还是新生代和老生代可以使用?

垃圾收集器类别

收集器新/老生代阶段说明单/多线程进行收集是否Stop The Word备注
Serial
ParNewSerial多线程版本
Parallel Scavenge吞吐量高(其他都是Stop The Word时间短),用于后台运算而不需要太多交互的任务
Serial OldSerial老年代版本
Par OldParallel Scavenge老年代版本
CMS(Concurrent Mark Sweep)1.初始标记2.并发标记3.重新标记4.并发清除1,3阶段1.并发指的是与业务线程。2.有缺点。3.适合B/S。4.其为标记-清除(其他为标记整理),所以会产生碎片。
G1(Garbage First)1.设置垃圾收集不超过多少毫秒2.划分区域
备注:一般ParNew和CMS配合使用

垃圾回收器总结

-因为使用的是分代收集算法(Generational Collection),所以 一般情况下,所有收集器新生代都使用复制算法,老生代都使用标记-整理算法
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: