JVM相关知识学习

JVM的垃圾回收算法是什么?

分代回收算法:然后详细阐述年轻代有哪些算法,老年代有哪些算法

垃圾收集器总结:

最初使用的是Serial + Serial Old收集垃圾,最简单,因为二者都是单线程的,所以只适合少内存使用。

随着内存的增大,开始使用Parallel Scavenge + Paralled Old,这两个其实就是前面两个Serial的多线程版本,性能会更好一些,在JDK1.6 - JDK1.8中作为默认的垃圾回收器。

随着内存的进一步增大,出现了ParNew + CMS的组合,其中ParNew是Paralled Scavenge为了配合CMS出现的改进技术,CMS是并发标记清除。看似性能更好,实则存在巨大的缺陷:CMS会导致大量的内存碎片,并且在并发收集失败的情况下,会使用Serial Old这个单线程的收集器进行垃圾收集( 需要stop the world),一般情况下,可以设置内存使用70% - 80%就开始老年代回收(Full GC)

从JDK1.7之后出现了G1垃圾收集器,在JDK1.8之后开始完善,它支持更大的内存(大概几百G),特点是逻辑分代,物理不分代,它的stop the world时间可以小于200ms。

posted @ 2022-03-23 20:19  yfwei  阅读(18)  评论(0编辑  收藏  举报