gc和finalize

图片描述

Thinking in Java里的例子,为什么我的程序输不出 ERROR:checked out!呢

阅读 3.3k
2 个回答

没试你的程序, 我想应该是 你System.gc() 后程序直接退出了. System.gc()只是对jvm的一个建议, 希望能 做一次gc来 增大可用内存.

你试试 在System.gc()后, Thread.sleep(10000).

gc是由jvm控制的,jvm根据条件触发gc,比如程序空闲,比如内存不足等等。System.gc()方法只是向jvm发出一个通知,是否要gc还是jvm根据上面说的几个条件来判断的。所以显示调用System.gc()后,未必马上会触发gc,所以也不会触发finalize方法了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题