JVM垃圾回收的流程及各种垃圾回收器的工作原理如何详细解析?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2307个文字,预计阅读时间需要10分钟。
JVM垃圾回收流程允许GC之后开始查找允许被回收的两个算法——开始回收四步算法的第一步开始查找允许被回收的两个对象——开始回收四步算法>开始回收四步算法+第一步那些对象是垃圾
jvm垃圾回收的流程允许GC之后开始查找那些允许被回收的两个算法-开始回收四个算法第一步开始查找那些允许被回收的两个算法-> 开始回收四个算法第一步那些对象是垃圾
1引用计数法通过对引用的遍历找到对应的实例让对应的实例计数加 1 如果引用取消或者指向null实例的引用减 1 。把找到的引用都遍历一遍之后如果发现有对象实例的计数是0。那么这个对象 就是垃圾对象了。在通过垃圾回收算法对其进行 回收即可。
缺点想想一下有两个类互相引用也就是A对象的实例也就是对象的全局变量是一个指向B对象的引用B对象实例是一个指向A对象的引用。那么这两个对象的引用计数永远不可能是0 。也就不可能对其进行回收了。
2可达性分析法这个算法类似于树的遍历学过数据结构的小伙伴应该会好理解。简单来说按照一定的规则说明那些可以作为一个根节点GC root然后以这些根节点去访问其引用的对象被访问的对象又会有其他对象的引用。想象一下是不是像极了树的遍历。这个路径称作引用链但凡是在引用链上的对象都是可用的。注意引用连的起始点都是GC root 哦。虽然有其他对象存在类似于引用链的结构但是起始点不是GC root的那一些都是垃圾可以被回收的。
一般情况下都是使用的 可达性分析法去查找垃圾类实例。
本文共计2307个文字,预计阅读时间需要10分钟。
JVM垃圾回收流程允许GC之后开始查找允许被回收的两个算法——开始回收四步算法的第一步开始查找允许被回收的两个对象——开始回收四步算法>开始回收四步算法+第一步那些对象是垃圾
jvm垃圾回收的流程允许GC之后开始查找那些允许被回收的两个算法-开始回收四个算法第一步开始查找那些允许被回收的两个算法-> 开始回收四个算法第一步那些对象是垃圾
1引用计数法通过对引用的遍历找到对应的实例让对应的实例计数加 1 如果引用取消或者指向null实例的引用减 1 。把找到的引用都遍历一遍之后如果发现有对象实例的计数是0。那么这个对象 就是垃圾对象了。在通过垃圾回收算法对其进行 回收即可。
缺点想想一下有两个类互相引用也就是A对象的实例也就是对象的全局变量是一个指向B对象的引用B对象实例是一个指向A对象的引用。那么这两个对象的引用计数永远不可能是0 。也就不可能对其进行回收了。
2可达性分析法这个算法类似于树的遍历学过数据结构的小伙伴应该会好理解。简单来说按照一定的规则说明那些可以作为一个根节点GC root然后以这些根节点去访问其引用的对象被访问的对象又会有其他对象的引用。想象一下是不是像极了树的遍历。这个路径称作引用链但凡是在引用链上的对象都是可用的。注意引用连的起始点都是GC root 哦。虽然有其他对象存在类似于引用链的结构但是起始点不是GC root的那一些都是垃圾可以被回收的。
一般情况下都是使用的 可达性分析法去查找垃圾类实例。

