Java垃圾回收机制
Java垃圾回收机制
数理强强 2019-04-17 20:55:27 1425 收藏
分类专栏: Java 文章标签: Java JVM GC
版权
1.何为Java垃圾?
在 Java 虚拟机的语境下,垃圾指的是死亡的对象所占据的堆内存空间
2.何为Java垃圾回收(Garbage Collection ,简称 GC)?
Java垃圾回收是将已经分配出去的,但却不再使用的内存回收回来,以便能够再次分配
3.如何辨别一个对象是存是亡?
方法一:引用计数算法(reference counting)
每个对象添加一个引用计数器,用来统计引用指向该对象的个数。如果有一个引用,被赋值为某一对象,那么将该对象的引用计数器 +1。如果一个指向某一对象的引用,被赋值为其他值,那么将该对象的引用计数器 -1。如果 某个对象的引用计数器为0,则说明该对象已死亡,则可以被回收。
优点:a. 执行速度快
b. 可交织在程序运行中。对程序需要不被长时间打断的实时环境比较有利。
缺点:a. 需要额外的空间来存储计数器;
b. 繁琐的更新操作;
c. 存在无法处理循环引用对象的漏洞,造成内存泄漏。
方法二:可达性分析算法
实质在于将一系列 GC Roots 作为初始的存活对象合集(live set),然后从该合集出发,探索所有能够被该集合引用到的对象,并将其加入到该集合中,这个过程我们也称之为标记(mark)。最终,未被探索到的对象便是死亡的,是可以回收的。
————————————————
版权声明:本文为CSDN博主「数理强强」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_32730819/article/details/89204489