JVM 调优实战--垃圾回收的常见算法
目录
自动化的管理内存资源,垃圾回收机制必须要有一套算法来进行计算,哪些是有效的对象,哪些是无效的对象,对于无效的对象就要进行回收处理。
常见的垃圾回收算法有:引用计数法、标记清除法、标记压缩法、复制算法、分代算法等。
引用计数法
原理
![]()
优缺点
标记清除法
标记清除算法也叫根可达算法。在垃圾回收器执行过程中会暂停所有的工作线程。
原理
优缺点
标记压缩算法
原理
优缺点
复制算法
原理
将存活对象从from区复制到to区:
清空from区,并且将to区的存活对象移动到from区,相当于颠倒一下位置:
JVM年轻代内存空间
使用的就是复制算法:
优缺点
分代算法
总结
目前还没有一种完美的垃圾回收算法,每一种算法既有优点又有缺点,因此根据垃圾回收对象的特点进行选择,才是最明智的选择。
分代算法就是如此(因地制宜),根据回收对象的特点进行选择:
在JVM中,年轻代适合使用复制算法,因为垃圾对象较多;
老年代适合使用标记清除或者标记压缩算法,因为垃圾较少,存活对象较多。