- 浏览: 165525 次
文章分类
最新评论
-
sydneytsao2:
gfs球棒gsd
Java设计模式——六大原则 -
涛涛饭:
memoryisking 写道可以看看这篇文章,构建一个简单的 ...
Java线程池使用说明 -
a492846462:
Java线程池使用说明 -
sprita1:
资源很好很强大,对楼主膜拜中.....
Java线程池使用说明 -
memoryisking:
可以看看这篇文章,构建一个简单的线程池:http://www. ...
Java线程池使用说明
垃圾回收器要回收对象的时候,首先要调用这个类的finalize方法(你可以 写程序验证这个结论),一般的纯Java编写的Class不需要重新覆盖这个方法,因为Object已经实现了一个默认的,除非我们要实现特殊的功能(这 里面涉及到很多东西,比如对象空间树等内容)。
有时当撤消一个对象时,需要完成一些操作。例如,如果一个对象正在处理的是非Java 资源,如文件句柄或window 字符字体,这时你要确认在一个对象被撤消以前要保证这些资源被释放。为处理这样的状况,Java 提供了被称为收尾(finalization )的机制。使用该机制你可以定义一些特殊的操作,这些操作在一个对象将要被垃圾回收程序释放时执行。 finalize()方法的通用格式如下: protected void finalize( ) 其中,关键字protected是防止在该类之外定义的代码访问finalize()标识符。该标识符和其他标识符将在第7章中解释。 理解finalize( ) 正好在垃圾回收以前被调用非常重要。例如当一个对象超出了它的作用域时,finalize( ) 并不被调用。这意味着你不可能知道何时——甚至是否——finalize( ) 被调用。因此,你的程序应该提供其他的方法来释放由对象使用的系统资源,而不能依靠finalize( ) 来完成程序的正常操作。 注意:如果你熟悉C++,那你知道C++允许你为一个类定义一个撤消函数(destructor ),它在对象正好出作用域之前被调用。Java不支持这个想法也不提供撤消函数。finalize() 方法只和撤消函数的功能接近。当你对Java 有丰富经验时,你将看到因为Java使用垃圾回收子系统,几乎没有必要使用撤消函数。
finalize()在什么时候被调用? 除此以外,正常情况下,当某个对象被系统收集为无用信息的时候,finalize()将被自动调用,但是jvm不保证finalize()一定被调用,也就是说,finalize()的调用是不确定的,这也就是为什么sun不提倡使用finalize()的原因 有时当撤消一个对象时,需要完成一些操作。例如,如果一个对象正在处理的是非Java 资源,如文件句柄或window 字符字体,这时你要确认在一个对象被撤消以前要保证这些资源被释放。为处理这样的状况,Java 提供了被称为收尾(finalization )的机制。使用该机制你可以定义一些特殊的操作,这些操作在一个对象将要被垃圾回收程序释放时执行。 要给一个类增加收尾(finalizer ),你只要定义finalize ( ) 方法即可。Java 回收该类的一个对象时,就会调用这个方法。在finalize ( )方法中,你要指定在一个对象被撤消前必须执行的操作。垃圾回收周期性地运行,检查对象不再被运行状态引用或间接地通过其他对象引用。就在对象被释放之 前,Java 运行系统调用该对象的finalize( ) 方法。 finalize()方法的通用格式如下: protected void finalize( ) 其中,关键字protected是防止在该类之外定义的代码访问finalize()标识符。该标识符和其他标识符将在第7章中解释。 理解finalize( ) 正好在垃圾回收以前被调用非常重要。例如当一个对象超出了它的作用域时,finalize( ) 并不被调用。这意味着你不可能知道何时——甚至是否——finalize( ) 被调用。因此,你的程序应该提供其他的方法来释放由对象使用的系统资源,而不能依靠finalize( ) 来完成程序的正常操作。 注意:如果你熟悉C++,那你知道C++允许你为一个类定义一个撤消函数(destructor ),它在对象正好出作用域之前被调用。Java不支持这个想法也不提供撤消函数。finalize() 方法只和撤消函数的功能接近。当你对Java 有丰富经验时,你将看到因为Java使用垃圾回收子系统,几乎没有必要使用撤消函数。 垃圾收集器在进行垃圾收集的时候会自动呼叫对象的finalize方法,用来进行一些用户自定义的非内存清理工作,因为垃圾收集器不会处理内存以外的东西。所以,有的时候用户需要定义一些清理的方法,比如说处理文件和端口之类的非内存资源。 |
发表评论
-
设置session失效的几种方法
2013-12-12 09:30 614设置session失效的几种 ... -
Java性能基础-Java堆内存
2013-01-25 15:25 1110导读:对于程序员来说,知道堆空间,设置堆空间,处理堆空间的o ... -
Collection框架
2013-01-25 15:13 1104Collection框架 集合框架 ... -
为什么匿名内部类只能访问其所在方法中的final变量
2013-01-25 14:48 849(1).内部类是外部类的一个成员,就像外部类的成员方法一样,所 ... -
Tomcat目录及server.xml详解
2012-09-11 13:23 900本文参考自:Tomcat全 ... -
java获得项目绝对路径
2012-09-05 11:16 5203在jsp和class文件中调用的相对路径不同。在 ... -
HttpURLConnection用法详解
2012-09-03 11:35 983HttpURLConnectio ... -
Java简单问题
2012-08-14 22:56 9301.HashMap和HashTable区别 Has ... -
FilenameFilter的几种基本用法
2012-08-13 10:41 813现在假设我们想观看 ... -
编写一个程序,将d:\java目录下的所有.java文件复制到d:\jad目录下,并将原来文件的扩展名从.java改为.jad
2012-08-02 11:54 2847编写一个程序,将d:\java目录下的所有.java文件复制到 ... -
问题列表
2012-07-27 17:17 3641.描述一下JVM加载class文件的原理机制? 2.试举例说 ... -
死锁是什么
2012-07-27 13:10 850在并发程序设计中,死 ... -
Java内存分配:Java堆.栈和常量池
2012-07-26 17:31 744Java堆.栈和常量池 博 ... -
BigInteger、BigDecimal详解
2012-07-26 17:22 1509BigInteger、BigDecimal详解 ... -
Java集合总结
2012-07-25 17:11 1272在Java中使用Set,可以方 ... -
String.replaceAll() 正则表达式
2012-07-19 15:46 1168最近项目中出现了一个 ... -
问题列表
2012-07-19 15:45 738问题1:list中是string,最快的排序 List li ... -
WebService基本原理
2012-07-19 10:17 727Web 服务有两层含义:1、是指封装成单个实体并发布到网络上的 ... -
重写equal 的同时为什么必须重写hashcode?
2012-07-18 17:09 1185分类: java 2011-10-21 11:33 1 ... -
web.xml
2012-07-18 08:39 748web.xml 中的listener、 filter、serv ...
相关推荐
Java 中 finalize() 的用法 Java 中的 finalize() 方法是垃圾回收器在回收对象时调用的第一个方法。finalize() 方法相当于析构函数,它是垃圾回收器回收一个对象时第一个要调用的方法。finalize() 方法的主要作用是...
Java 中 finalize 方法使用 finalize 方法是 Java 编程语言中一个非常重要的方法,它与 Java 编程中的垃圾回收器有着紧密的关系。当一个对象变成一个垃圾对象的时候,如果此对象的内存被回收,那么就可以调用系统中...
Java中finalize()详解及用法 在Java中,finalize()方法是一个重要的概念,它与final关键字息息相关。下面我们将深入探讨finalize()方法的用法和应用场景。 一、final关键字 final是Java的关键字,它所表示的是...
Java中的`finalize()`方法是Java语言提供的一种机制,用于在对象被垃圾回收之前进行资源清理。这个方法在Java的`Object`类中被定义为`protected`类型,因此所有Java类都能够覆盖它来实现特定的清理操作。在垃圾回收...
Java中的`finalize`方法是Object类的一个特殊方法,它的主要作用是在对象被垃圾收集器回收前执行清理工作。本文将详细解析`finalize`方法的实现和执行过程。 首先,了解`finalize`方法的用途:当一个对象不再被任何...
这个引用对象专门为带finalize方法的类服务,可以理解为每一个有相应的方法的对象,其都会封装为一种finalRefernece对象. 因为finalize方法是object定义的,其默认实现为空.那么如果重写了此方法,那么方法体...
在Java编程语言中,`finalize()`方法是一个特殊的方法,它属于`Object`类,主要用于对象销毁前执行一些必要的清理工作。然而,随着Java版本的更新和垃圾收集机制的改进,`finalize()`方法逐渐失去了其原本的重要性,...
Java中的finalize()方法覆盖实例代码详解 finalize()方法是Java中的一个特殊方法,它可以在对象被垃圾回收器回收之前执行一次。这个方法可以用来释放对象持有的资源,但是它的使用需要非常小心,因为它带有很多不...
Java中final,finally,finalize三个关键字的区别_动力节点Java学院整理
java中final, finally, finalize 的区别
在Java编程语言中,`final`, `finally`, 和 `finalize` 是三个非常重要的关键字,它们各自扮演着不同的角色,尤其在处理程序的可预测性、数据的不可变性和垃圾回收等方面。下面将详细阐述这三个关键字的区别及其应用...
Java编程中的`final`, `finalize`, 和`finally`是三个重要的关键字,它们各自在不同的场景下发挥着关键作用。理解这三个关键字的区别对于Java开发者来说至关重要,尤其是在面试中常常会被问及。 首先,`final`是一...
Java中的finalize方法是一个特殊的方法,位于Java.lang.Object类中,它的主要作用是允许开发者在对象被垃圾回收前执行一些清理工作。但是,finalize方法存在许多问题,导致它不被推荐使用。 首先,finalize方法的...
`finalize()`方法是在`Object`类中定义的,这意味着所有Java类都默认继承了这个方法。然而,通常情况下,`finalize()`方法是不需要程序员去实现的,因为垃圾收集器的自动清理已经足够处理大部分情况。只有在特殊情况...
java.lang.object原始码最终不推荐使用java.lang.Object.finalize() 我的博客文章中的示例的Gradle源代码存储库。 在Linux Mint(SUSE Linux)上构建和测试。 由于gradle当前不支持Java 11,因此可以使用标准Java...
现代Java版本中,更倾向于使用显式资源管理或尝试-资源语句来替代`finalize`方法的使用。 ### HashMap与Hashtable #### HashMap `HashMap`是Java集合框架中的一部分,提供基于哈希表的键值对存储。它允许单个空键...
Java中的Object类是所有类的根,每个自定义类如果没有明确指定父类,都将默认继承Object。Object类中包含了一些基础且重要的方法,这些方法在Java编程中扮演着关键角色。接下来我们将详细讨论这些方法以及`finalize...
Java编程中的`final`、`finally`和`finalize`关键字对于理解Java程序的运行机制至关重要。它们各自有独特的用途和特点。 首先,`final`关键字是Java中的一个多面手,它可以用于修饰类、方法和变量。当`final`用于...
1.Java中finalize()的作用一主要是清理那些对象(并非使用new)获得了一块“特殊”的内存区域。程序员可以用finalize()来操作。 程序员都了解初始化的重要性,但常常会忘记同样也重要的清理工作。毕竟,谁需要清理一个...