请问一下下面这种情况GC会回收这两个对象吗? public class TestCase2 { public static void main(String[] args) { A a = new A(); B b = new B(); a.b = b; b.a = a; a = null; b = null; }}class A{ B b; }class B{ A a;} 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 会的,只要jvm检查到该对象不在被使用,就会回收 关键是为什么,,GC判断对象是否有效不是根据引用是否被其他对象持有吗?看一下可达性分析算法,写个程序打印一下GC日志就知道了。 首先,a = null; b = null;这两行代码虽然各自置空引用,只是把栈内存指向堆内存的地址置空了。但是两个对象互相引用的事实并未改变,而java为什么能回收这种对象是因为java采用的是可达性分析算法进行内存回收。而该java使用该算法的目的就是针对这种循环引用的情况。 JTree节点名字修改? 关于线程同步的问题 以下声明合法的是() 在连接数据库数据后面加一段什么代码可以得到中文字符 如何只花100元 学好Java并顺利的找到工作, 一个过来人的成功经验, 共同分享, 望广大大侠有所指正, 给后来人所启示. JB X 下引用别人开发好的类,简单引用 编译通不过~ 新手编辑错误 老问题,关于EditPlus运行java程序的问题, 哪里有JBuider7.0的教程,给一个 急啊,版主及高手请进!!!!快啊!! [正则表达式]正则表达式无法匹配,why? 菜鸟求教,感谢各位大佬
看一下可达性分析算法,写个程序打印一下GC日志就知道了。
a = null;
b = null;
这两行代码虽然各自置空引用,只是把栈内存指向堆内存的地址置空了。但是两个对象互相引用的事实并未改变,而java为什么能回收这种对象是因为java采用的是可达性分析算法进行内存回收。而该java使用该算法的目的就是针对这种循环引用的情况。