package Initialization;
class Tank{
int howFull = 0;
Tank() { this(0);}
Tank(int fullness){
howFull = fullness;
}
void sayHowFull(){
if(howFull == 0)
System.out.println("Tank is empty!");
else
System.out.println("Tank filling status : " + howFull);
}
void empty(){
howFull = 0;
}
protected void finalize(){
if(howFull != 0){
System.out.println("Error: Tank not empty." + this.howFull);
}
//Normally,you'll also do this:
//Super.finalize(); //call the base-class version
}
}
public class TankTest {
public static void main(String[] args) {
Tank tank1 = new Tank();
Tank tank2 = new Tank(3);
Tank tank3 = new Tank(5);
tank2.empty();
//Drop the reference,forget to cleanup:
new Tank(6);
new Tank(7);
System.out.println("Check tanks:");
System.out.println("tank1:");
tank1.sayHowFull();
System.out.println("tank2:");
tank2.sayHowFull();
System.out.println("tank3");
tank3.sayHowFull();
System.out.println("first forced gc()");
System.gc();
System.out.println("try deprecated runFinalizerOnExit(true)");
System.runFinalizersOnExit(true);
System.out.println("last forced gc():");
System.gc();
}
}
运行结果如下:
Check tanks:
tank1:
Tank is empty!
tank2:
Tank is empty!
tank3
Tank filling status : 5
first forced gc()
Error: Tank not empty.7
Error: Tank not empty.6
try deprecated runFinalizerOnExit(true)
last forced gc():
Error: Tank not empty.5
System.runFinalizersOnExit()方法是指当应用程序退出时对所有对象执行终结方法。包括有引用的对象和没有通过引用的对象,而System.gc()垃圾回收方法仅回收那些没有引用指向的对象。
分享到:
相关推荐
Java中finalize方法使用
Java中finalize方法.pdf 学习资料 复习资料 教学资源
主要介绍了Java中覆盖finalize()方法实例代码,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
Java禁止使用finalize方法共2页.pdf.zip
Java 技术允许使用finalize() 方法在垃圾收集器将对象从内存中清除出去 之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对 象调用的。它是在Object 类中定义的,因此所有的类都...
主要介绍了简单理解Java的垃圾回收机制与finalize方法的作用,着重讲解了Java的GC销毁对象的过程,需要的朋友可以参考下
配方详细介绍了在Java中finalize()的用法。
这个引用对象专门为带finalize方法的类服务,可以理解为每一个有相应的方法的对象,其都会封装为一种finalRefernece对象. 因为finalize方法是object定义的,其默认实现为空.那么如果重写了此方法,那么方法体...
主要介绍了Java禁止使用finalize方法,需要的朋友可以参考下
final, finally, finalize的区别
前端项目-css3finalize,Automatically add vendor prefixes
主要介绍了Java垃圾回收机制的finalize方法,结合实例形式分析了finalize方法的特点及在垃圾回收机制中的相关操作技巧,需要的朋友可以参考下
一,谈谈final, finally, finalize的区别。 java面试题
主要介绍了Java9垃圾回收方法finalize() 原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
对于一个JAVA程序员来说内存就是生命,如果出现内存泄露,或者内存不能释放,那程序就危险了,虽然JAVA有垃圾回收,但是你如果真的理解垃圾回收的原理,就应该看看这个!
finalize 是一个不让人待见的方法,它是对象祖宗 Object 中的一个方法,finalize 机制现在已经不推荐使用了。本篇文章,cxuan 就带你从这三个关键字入手,带你从用法、应用、原理的角度带你深入浅出理解这三个...
C++有析构函数这个东西,能够很好地在对象销毁前...JVM启动的时候,会创建一个Finalizer线程来支持finalize方法的执行。 关于引用和引用队列,java提供了4种引用类型,在垃圾回收的时候,都有自己各自的独特表现。Refe
Java中final,finally,finalize三个关键字的区别_动力节点Java学院整理
System-Initialize、Finalize.mht
finalize(),对象的复活1