龙空技术网

java中Object类的finalize的用法

马克java社区 42

前言:

现在小伙伴们对“java的finalize方法”都比较关怀,兄弟们都需要了解一些“java的finalize方法”的相关文章。那么小编在网摘上搜集了一些有关“java的finalize方法””的相关知识,希望各位老铁们能喜欢,你们一起来学习一下吧!

Object类的finalize的用法:

马克-to-win:java当中有个垃圾回收机制,具体说,就是当一些对象被创建使用之后若不再使用的话{比如(i)对象被置成null.(ii)局部对象(无需置成null)当程序运行到右大括号.(iii)匿名对象刚用完},就会变成垃圾占用空间,JAVA的自动垃圾回收(gc)线程会在适当的时候自动运行,回收内存。马克-to-win:再具体一点,对象被创建之后,垃圾回收(gc)系统就开始跟踪这个对象的使用情况。垃圾回收系统采用有向图的方式:开始时对象一定是可达的,刚把它置为 null时,它也就变成了不可达的了,这时就是所谓的垃圾。垃圾回收系统就会回收这些内存空间。马克-to-win:回收之前,先调用该对象的 finalize方法。让其做一些最后的收尾工作。见下例,当p1 = null;时,Java的垃圾回收线程会在适当时间点回收p1对象占据的内存空间。马克-to-win:回收之前,首先调用p1的finalize()。但是sun公司不保证finalize方法会被及时地自动执行。所以我们加了一句,System.gc ();建议系统回收一下垃圾。gc代表garbage collection(垃圾回收),finalize方法就被执行了。

马克- to-win:马克 java社区:防盗版实名手机尾号: 73203。

例2.1.4

class PersonMark_to_win {

String name;

public PersonMark_to_win(String n) {

name = n;

}

public void finalize() {

System.out.println(name + " 在进行finalize");

}

}

public class Test {

public static void main(String[] args) throws InterruptedException {

PersonMark_to_win p1 = new PersonMark_to_win("张三");

PersonMark_to_win p2 = new PersonMark_to_win("李四");

p1 = null;

// p2 = null;

System.gc();

// Thread.sleep(3000);//如果发现gc不执行,就运行一下sleep

}

}

输出结果:

张三 在进行finalize

例2.1.4_a

class PersonMark_to_win {

String name;

public PersonMark_to_win(String n) {

name = n;

}

public void finalize() {

System.out.println(name + " 在进行finalize");

}

void test(){

PersonMark_to_win pp1 = new PersonMark_to_win("张三jubu");

篇幅有限更多请见扩展链接:

标签: #java的finalize方法