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(),因为它无法预料,通常来说使比较危险的,总之使多余的。












网友评论