对象实例销毁
来源:互联网 发布:中国网络通俗歌手大赛 编辑:程序博客网 时间:2024/05/29 10:54
JAVA 对象销毁的过程
---RayC2009-09-02
类对象有一个protected方法 finalize ,这个方法可以被其他类覆盖。能一个对象被调用的特定的finalize 被称为那个对象的 finalizer 。在垃圾回收器回收一个对象时,JVM 将调用对象的 finalizer 。
Finalizer 释放了不能被自动存储管理器自动释放的资源(比如文件句柄或者操作系统图形上下文)。在这种情况下,简单的回收对象使用的内存空间不能保证它拥有的资源被回收。
JAVA编程语言没有确定 finalizer 调用的频率,但是它会在这个对象的存储被重用前被调用。同样,JAVA 编程语言也没有确定调用任何给定的对象的 finalizer. 如果在销毁期间一个没有捕获的异常被抛出,异常将被忽略,同时对象销毁的过程也将停止。
在类对象中的Finalize 方法不主动执行。然而,任何类声明了 finalize 方法表明它们的 finalize 方法总是调用超类的 finalize 方法,也就是为了要调用超类的 finalize 方法才声明子类的 finalize 方法,这通常是一个好的实践。(和构造方法不一样,销毁器不自动调用超类的销毁器;这种调用必须显式声明,也就是在子类的 finalize方法中调用超类的 finalize 方法。)
出与效率的考虑,实现上追踪了覆盖finalize 方法的类对象和用其他方式覆盖 finalize 方法的类对象,比如
表1-1
protected void finalize() { super.finalize(); }
我们鼓励不去覆盖类对象的finalize 方法,但是更有效的去释放它们。
象其他方法一样,Finalize方法可能不被显式调用。然而这样做不影响对象最终的自动销毁。
JVM 推行随机的执行finalize方法。销毁器可能以任意的次序或者并发的被调用。
例如,如果一个不可销毁的循环链接对象组不可达,那么所有的对象将会一起变成可以销毁。最终,这些对象的销毁器将以任意的次序或者并发的销毁。如果自动存储管理器发现这些对象不可达,那么他们的存储将被释放。
译自 JVMSPECIFICATION 2.17.7 Finalization of Class Instances
- 对象实例销毁
- 实例化,执行,初始化,销毁bean对象
- Effective java 代码优化实例--创建和销毁对象
- C++单例类对象的实例化和销毁
- Java 父类和子类对象销毁实例
- ueditor实例销毁重建
- PHP中的对象销毁
- TN017:销毁窗口对象
- 如何销毁对象
- C++对象与销毁
- __unset销毁对象
- 对象的销毁原则
- 创建和销毁对象
- 对象的销毁
- 创建和销毁对象
- Java 销毁对象
- 创建和销毁对象
- 创建和销毁对象
- Struts Bean标签
- windows2003应用程序池假死的问题
- c# 去除网页源码中的HTML标记
- getAttribute和getParameter区别
- struts 2.0 标签用法
- 对象实例销毁
- fck2.6.4.1使用
- 一些实用的函数
- js全选
- Using JAX-RS (Jersey) to build a JPA/JAXB-backed JSON REST API
- 控制输入的长度
- Hashmap在freemarker中的应用
- c#实现DataTable中行row、列Columns互换
- IE8与IE6和IE7的区别