Java中的垃圾回收
首先请谨记以下三点
- Your objects might not get garbage collected.
- Garbage collection is not destruction.
- Garbage collection is only about memory.
清理:终结处理和垃圾回收——finalize()
Java有垃圾回收器负责回收无用对象(前提是该对象是
new
出来的)占用的内存,但是对于那些不是使用new
获得的特殊对象内存资源,该如何回收它们占用的内存资源呢?
答案是:Java允许在类中定义一个名为finalize()
的方法。
其工作原理的“假定”是这样的:
- 一旦垃圾回收器准备好释放对象占用的内存资源时,将首先调用对象的
finalize()
方法。 - 在下一次垃圾回收动作发生时,真正地释放对象所占用的内存资源。
所以,使用finalize()
能够帮助你做一些真正重要的清理工作。
使用以下代码可以使finalize()
总会被调用:
System.gc();
System.runFinalization();
《Effective Java》中有这么一句话:
但是,请注意一定不要在Java中过多使用
finalize()
!最好避免使用finalize()
,因为它无法预料,通常来说使比较危险的,总之使多余的。
网友评论