java finalize和垃圾回收
我看thinkinginjava。上面说垃圾回收器先调用对象的finalize方法,下次回收时才释放内存,为什么不调完接着释放,而是要两次呢?...
我看thinking in java。上面说垃圾回收器先调用对象的finalize方法,下次回收时才释放内存,为什么不调完接着释放,而是要两次呢?
展开
1个回答
展开全部
java的垃圾回收不是由你来控制的
你调用那个finalize方法只是告诉垃圾回收器,这个东西可以回收了
然后到底什么时候会回收,就看回收器的心情了(这个就是“下次回收时才释放内存”的意思)
你调用那个finalize方法只是告诉垃圾回收器,这个东西可以回收了
然后到底什么时候会回收,就看回收器的心情了(这个就是“下次回收时才释放内存”的意思)
追问
我的意思是问,为什么非得两次,不是一次。为什么这么规定
追答
因为
1、java的垃圾回收是自动进行的
2、垃圾回收器是按自己步调来工作的
至于为啥设计成以上那样,那我不能解释
至于为什么程序员只能将对象标记为可回收(也可以调用方法建议回收),这个肯定是跟回收器的工作量还有工作效率有关。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询