深入理解java虚拟机第二版 代码清单3-1对于引用算法的验证没有输出结果,与书上说明不符,为什么?
代码如下:
package referenceCoutingGC;
/**
*
* testGC()方法执行后,ogjA和ogjB会不会被GC呢?
*
*/
public class referenceCoutingGC {
public Object instance = null;
private static final int _1MB = 1024*1024;
private byte[] bigSize = new byte[2*_1MB];
public static void testGC(){
referenceCoutingGC objA = new referenceCoutingGC();
referenceCoutingGC objB = new referenceCoutingGC();
objA.instance = objB;
objB.instance = objA;
objA = null;
objB = null;
//假设在这行放生GC,objA和objB是否能被回收?
System.gc();
System.out.println("??");
}
public static void main(String[] args){
testGC();
}
}
书上是有输出结果的。 还特地说明4603k->210k的字眼。
我的是jdk 1.8
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
他那个输出是因为运行java时添加了运行参数, 应该是
-XX:+PrintGCDetails
.个人理解, 这一节只是一个简介, 而这个例子只是想告诉你那两个对象会被回收, 你可以暂时忽略这些日志, 有兴趣可以在读完这章以后再回头看这些示例.
说的直白点, 即使你能让程序输出这些GC日志, 也不一定看得懂. 所以, 继续往下读吧.