ema*_*ema 6 java oop destructor
public class A {
double wage;
A(double wage){
this.wage=wage;
}
}
Run Code Online (Sandbox Code Playgroud)
//在这段代码中,我应该定义构造函数和析构函数.
小智 7
在Java中,no destructors
您可以使用方法Object#finalize()作为解决方法.
Java编程语言不保证哪个线程将为任何给定对象调用finalize方法.但是,可以保证,调用finalize时,调用finalize的线程不会持有任何用户可见的同步锁.如果finalize方法抛出未捕获的异常,则忽略该异常并终止该对象的终止.
class Book {
@Override
public void finalize() {
System.out.println("Book instance is getting destroyed");
}
}
class Demo {
public static void main(String[] args) {
new Book();//note, its not referred by variable
System.gc();//gc, won't run for such tiny object so forced clean-up
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
Book instance is getting destroyed
Run Code Online (Sandbox Code Playgroud)
运行垃圾收集器.调用gc方法表明Java虚拟机花费了大量精力来回收未使用的对象,以使其当前占用的内存可用于快速重用.当控制从方法调用返回时,Java虚拟机已尽最大努力从所有丢弃的对象中回收空间.
调用System.gc()实际上等同于调用:
调用Runtime.getRuntime().GC()
当垃圾收集确定没有对该对象的更多引用时,由对象上的垃圾收集器调用.子类重写finalize方法以处置系统资源或执行其他清理.