垃圾收集器使用垃圾收集根(GC根)的概念来识别活的和死的对象。对java感兴趣的同学可以参加java培训,你可以学会更多的java新技术。
此类垃圾收集根的示例包括:
l 由系统类装入器(非自定义类装入器)装入的类
l 实时线程
l 当前执行方法的局部变量和参数
l JNI方法的局部变量和参数
l 全球JNI参考
l 用作同步监视器的对象
l JVM出于垃圾收集目的而保留的对象
垃圾收集器遍历内存中的整个对象图,从那些垃圾收集根开始,并遵循从根到其他对象的引用。想要学习java更多知识和技能,可以考虑参加java培训,有经验丰富的专业讲师指导教学,有紧跟市场需求的实时课程,可以让你快速掌握这门技术,节约时间,少走弯路。
标准垃圾收集实施包括三个阶段:
1.将对象标记为活动
在这一步中,GC通过遍历对象图来识别内存中的所有活动对象。
当GC访问一个对象时,它将其标记为可访问的,因此是活动的。垃圾收集器访问的每个对象都标记为活动。所有不能从GC根访问的对象都是垃圾,并被视为垃圾收集的候选对象。
2.扫描死对象
在标记阶段之后,内存空间被活动(已访问)和死亡(未访问)对象占用。扫描阶段释放包含这些死对象的内存碎片。
3.压缩内存中的剩余对象
扫描阶段移除的固定对象不一定相邻。因此,最终可能会有零碎的内存空间。
在垃圾收集器删除死对象后,可以压缩内存,以便剩余的对象位于堆开始处的连续块中。
压缩过程使按顺序为新对象分配内存变得更容易。想对java有更深入的了解,可以参加java培训,在专业老师的指导下,你可以很快掌握java的更多特性。