原理:
一旦垃圾回收器准备好释放对象占用的存储空间,将首先调用其finalize()方法,并在下一次垃圾回收动作发生时,才会真正回收对象占用的内存。
用途:
1)释放通过某种创建对象方式以外的方式为对象分配的存储空间
那么对于一切都是对象的java,这种现象是怎么产生的呢?
主要发生在使用“本地方法”的情况下,(本地方法:一种在java中调用非java代码的方式),对于这样分配的java对象的存储空间就需要finalize()来释放内存
2)用finalize()来检测终结条件
例如:对象代表了一个打开的文件,在对象被回收前,应该关闭这个文件。
ps.
提醒jvm进行垃圾回收的方式
1)Runtime.getRuntime.gc()
2)System.gc()--(方法内部实现为Runtime.getRuntime.gc())
垃圾回收的两种方式
1)标记-清扫
2)停止-复制