写点什么

性能优化三第九周作业「架构师训练营第 1 期」

用户头像
天天向善
关注
发布于: 2020 年 11 月 21 日

请简述JVM 垃圾回收原理

Jvm使用可达性分析堆中不再使用的对象,进行回收的算法有清理,压缩,复制。

清理,标记那些空间可以使用,会产生碎片。压缩则是将对象移到一起,将碎片处理,空出更大块的连续空间。复制则将仍在使用的对象复制到另外一块空间中。

jvm使用分代机制,分为新生代与老年代,新生代又分伊甸区与幸存区from与to区,新生代使用复制算法,将伊甸区仍有引用的对象复制到from区,下一次将伊甸区仍有引用的与from区的复制到to区,保证每次幸存区有一块是空的,如果幸存区存储不下这次复制,将会将一些对象存到老年代中,一些大对象超过幸区存的也会直接进入老年代。

幸存区的对象会经过一次回垃圾回收还存活,他自身的年龄会增加,默认16岁后还存活则进入老年代。

老年代的对象满了则会触发old gc,花的时间会较长,所以尽量在年轻代将不存活的对象回收。

垃圾回收器有serial串行,paralle并行,parnew+cms并发,g1,zgc等。

每次进行垃圾回收时,会stop the world即用户线程停止工作。



发布于: 2020 年 11 月 21 日阅读数: 20
用户头像

天天向善

关注

还未添加个人签名 2018.04.27 加入

还未添加个人简介

评论

发布
暂无评论
性能优化三第九周作业「架构师训练营第 1 期」