finalize方法
- 定义在 java.lang.Object 类中
- protected void finalize()throws Throwable{}
- 用于清理对象占用的资源;
- 垃圾回收器再回收莫对象的内存前,会调用finalize 方法
- 针对莫一对象,垃圾回收器最多只会调用他finalize 方法
一次
注意 不要主动调用 finalize 方法
finalize 方法 何时调用,是否调用是不确定的
内存中的状态
-
若对象至少被一个变量引用 则该对象处于可达状态
-
可恢复状态
- 若对象不再被任何变量引用,他就进入了可恢复状态
- 此时垃圾回收器准备回收他的内存,并在回收前调用他的finalize 方法
-
不可达状态
- 若在调用finalize 方法后,对象依然未被引用,它就会进入了不可达状态
- 只有对象进入了不可达状态,垃圾回收器才会回收该对象占据的内存空间
强制垃圾回收
- Systeam.gc();
- Runtime.getRuntime().gc();
通知垃圾回收器进行垃圾回收,但是是否回收以及回收时机依然 由垃圾回收器决定