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

posted @ 2021-03-17 11:43  编码小高  阅读(44)  评论(0编辑  收藏  举报