前言
java会对内存进行自动分配和回收管理,深入理解GC的工作机制可以帮助你写出更好的java应用
垃圾回收的目的
清除不在使用的对象,自动释放内存
GC的定义
基于正在实用的对象进行遍历,对存活的对象进行标记,其未标记的对象可认为是垃圾对象,然后基于特定的算法进行回收
如何判断对象是否可以被回收
为了判断对象是否存活,jvm引入了GC ROOTS 如果一个对象和GC ROOTS之间没有直接或间接的引用关系,是可以被回收的
回收器
Serial回收器是一个主要应用于YGC的垃圾回收器
CMS回收器:是回收停顿时间较短,目前比较常用的垃圾回收器,由于CMS采用的是"标记-清除"算法,因此会产生大量的空间碎片,CMS可以通过配置-XX:+UserCMSCompactAtFullCollection参数来解决
Hotspot在jdk7中推出了新一代的G1垃圾回收器,通过-XX:+UseG1GC参数启用,和CMS相比,G1具备压缩功能
评论区