Java中的垃圾回收

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



最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。