首先为什么输出语句在输出第一行,因为你调用了gc()方法,你只是告诉回收器有东西要回收但是什么时候回收是jvm控制的不是你控制的,所以你执行多次可能结果会不同。
其次,你说为什么不输出3句“对象即将被释放!”,我个人认为是这样的,垃圾回收器在jvm是以线程执行的,当该线程执行,释放了2个Person对象的堆空间后,CPU去执行你的程序了,如果你的程序已经结束了,那么CPU再次调用时,肯定不会在控制台显示了,因为你的java程序都已经停止了....
这就跟我们学多线程时使用的那些范例差不多,每次运行的结果都不是一致的,是由CPU决定的。
哈哈,不一定对,希望高手可以指点一下
|