面试过程中一个问题,JVM中对于对象间循环引用,如何进行回收

class Node { Node next; } Node a = new Node(); Node b = new Node(); a.next = b;
b.next = a;

我说的是用的GC分代算法进行回收,查看了一些博客有用程序计数器,还有GC Roots寻根遍历方法,那现在具体处理方法是啥?求大神解答下
全部评论
谢谢了,大神们
点赞 回复 分享
发布于 2017-08-30 12:51
GCRoot,可达性分析算法,对象是否可以回收,关键是看对象和根节点是否有可达的路径。可以看成是一棵树,对象就是一个节点,根到这个节点有路径的话,就不能回收。反之亦然。
点赞 回复 分享
发布于 2017-08-30 11:32
个人理解,相互引用并不能保证不被回收,主要需要查找是否被GC root引用到。
点赞 回复 分享
发布于 2017-08-30 11:29
用可达性分析(GC Roots),如果只是循环引用,从GC Roots出发,不会到达这些循环引用的对象。所以会被回收。
点赞 回复 分享
发布于 2017-08-30 11:27
现在主流的java虚拟机中都是使用可达性分析算法来判断对象是否存活的,也就是“GC Roots”
点赞 回复 分享
发布于 2017-08-30 11:23

相关推荐

点赞 评论 收藏
分享
05-20 13:59
门头沟学院 Java
米黑子米黑子:你这个成绩不争取下保研?
点赞 评论 收藏
分享
06-13 17:00
武汉大学 Java
6月了还有点击就送的offer吗😭,投麻了😢
叫我阿东就行:这个bg,也还没找到理想的工作吗?好难,好焦虑
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务