对象析构和finalize方法

原创 2006年06月12日 20:15:00
    Java能自动的进行垃圾收集,可以将finalize方法添加到任何类中,finalize方法会在垃圾收集器清除对象之前被调用。但是实际的操作中,不要依赖finalize方法回收任何短缺资源,因为很难知道这个方法什么时候才能被调用。
    有个叫作System.runFinalizersOnExit(true)的方法可以确保finalize方法在Java关闭之前被调用。不过这个方法并不安全。另一种替代的方法是使用Runtime.addShutdownHook的方法增加“关闭钩子”。
    如果需要在资源使用完毕后关闭资源,那就需要进行手工的管理,对需要清除的资源使用dispose方法。重要的是,如果你使用的类含有dispose方法,你需要在对象操作完成后调用这个方法,尤其是,如果类的某个实例字段含有这个dispose方法,要提供一个释放实例字段的dispose方法。

相关文章推荐

【Effective Java】Ch2_创建销毁对象:Item7_避免使用finalize方法

Finalizer通常是不可预测的、危险的、不必要的。使用finalizer会导致不稳定的行为、低下的性能、以及可移植问题。Finalizer也有其可用之处,本文稍后会做介绍,但是作为一个首要法则,你...

在finalize方法中复活java对象

/** * 该类用于演示在对象的finalize()方法中复活对象(来自《实战java虚拟机》-葛一鸣) * 2017年4月4日 下午9:06:00 * @version v1.0 */ pu...
  • nmgrd
  • nmgrd
  • 2017年04月04日 21:09
  • 440

【JAVA优化编程】内存管理之——(3)Java中的析构方法finalize

3  Java中的析构方法finalize     在C++程序设计中有构造与析构的概念,并且是内存管理技术中相当重要的一部分,而在Java语言中只有构造的概念,却没有析构的概念。这是因为理论上JV...

Java编程思想:关于Java垃圾定义和finalize方法的简单理解和使用

JAVA JAVA编程思想

java finalize方法的使用

《JAVA编程思想》: Java提供finalize()方法,垃圾回收器准备释放内存的时候,会先调用finalize()。           (1).对象不一定会被回收。        (2)...

.NET Memory Profiler 托管环境内存检测工具,.net内存回收与Dispose﹐Close﹐Finalize方法

内存检测工具很多,.NET的GC也不是万能的。.NET比较专业的工具推荐 .NET Memory Profiler (收费)。 ============== 详细参考 网址:http://blo...
  • wlanye
  • wlanye
  • 2012年06月15日 13:14
  • 2440

读书笔记-2java虚拟机的可达性算法与finalize方法

JAVA通过可达性分析算法来确定堆中哪些对象是应该被回收的。 很多人包括我以前在不了解的时候总以为是通过引用计数器来判断某个对象是否应该被回收但是后来想了想包括查阅一些资料发现不是这样的,因为如...

Java finalize方法使用

《JAVA编程思想》: java提供finalize()方法,垃圾回收器准备释放内存的时候,会先调用finalize()。           (1).对象不一定会被回收。        (2)...
  • leeyu35
  • leeyu35
  • 2012年05月05日 16:09
  • 407

java笔记(一)[static和final常量&String.format()问题&Array类&finalize方法及内存回收]

1、使用>运算来计算2的多少次幂更为方便而且运算速度也更快,>右移相当于除以2即2的正分数次幂。 2、交换两个数并且不引入第三个变量的方法,如交换X与Y的值时可以这样写:x=x+y; y=x-y; x...

CLR Via C#读书笔记——Finalize方法被调用的时机【2011-01-18】

Finalize方法在垃圾收集结束时被调用,有5种事件会导致一个对象的Finalize方法被调用:1.第0代对象充满:第0代对象充满时开始执行垃圾收集。该事件是目前导致Finalize方法被调用的最常...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:对象析构和finalize方法
举报原因:
原因补充:

(最多只允许输入30个字)