- 浏览: 162540 次
文章分类
最新评论
-
sydneytsao2:
gfs球棒gsd
Java设计模式——六大原则 -
涛涛饭:
<div class="quote_title ...
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 595设置session失效的几种 ... -
Java性能基础-Java堆内存
2013-01-25 15:25 1087导读:对于程序员来说,知道堆空间,设置堆空间,处理堆空间的o ... -
Collection框架
2013-01-25 15:13 1073Collection框架 集合框架 ... -
为什么匿名内部类只能访问其所在方法中的final变量
2013-01-25 14:48 822(1).内部类是外部类的一个成员,就像外部类的成员方法一样,所 ... -
Tomcat目录及server.xml详解
2012-09-11 13:23 852本文参考自:Tomcat全 ... -
java获得项目绝对路径
2012-09-05 11:16 5169在jsp和class文件中调用的相对路径不同。在 ... -
HttpURLConnection用法详解
2012-09-03 11:35 952HttpURLConnectio ... -
Java简单问题
2012-08-14 22:56 9071.HashMap和HashTable区别 Has ... -
FilenameFilter的几种基本用法
2012-08-13 10:41 769现在假设我们想观看 ... -
编写一个程序,将d:\java目录下的所有.java文件复制到d:\jad目录下,并将原来文件的扩展名从.java改为.jad
2012-08-02 11:54 2797编写一个程序,将d:\java目录下的所有.java文件复制到 ... -
问题列表
2012-07-27 17:17 3391.描述一下JVM加载class文件的原理机制? 2.试举例说 ... -
死锁是什么
2012-07-27 13:10 824在并发程序设计中,死 ... -
Java内存分配:Java堆.栈和常量池
2012-07-26 17:31 713Java堆.栈和常量池 博 ... -
BigInteger、BigDecimal详解
2012-07-26 17:22 1455BigInteger、BigDecimal详解 ... -
Java集合总结
2012-07-25 17:11 1227在Java中使用Set,可以方 ... -
String.replaceAll() 正则表达式
2012-07-19 15:46 1103最近项目中出现了一个 ... -
问题列表
2012-07-19 15:45 706问题1:list中是string,最快的排序 List li ... -
WebService基本原理
2012-07-19 10:17 699Web 服务有两层含义:1、是指封装成单个实体并发布到网络上的 ... -
重写equal 的同时为什么必须重写hashcode?
2012-07-18 17:09 1157分类: java 2011-10-21 11:33 1 ... -
web.xml
2012-07-18 08:39 698web.xml 中的listener、 filter、serv ...
相关推荐
配方详细介绍了在Java中finalize()的用法。
Java中finalize方法使用
Java中finalize方法.pdf 学习资料 复习资料 教学资源
主要介绍了Java中finalize()详解及用法的相关资料,final是Java的关键字,它所表示的是“这部分是无法修改的”,需要的朋友可以参考下
在常规的java书籍中,即会描述 object的finalize方法是用于一些特殊的对象在回收之前再做一些扫尾的工作,但是并没有说明此是如何实现的.本篇从java的角度(不涉及jvm以及c++),有需要的朋友们可以参考借鉴。
这个引用对象专门为带finalize方法的类服务,可以理解为每一个有相应的方法的对象,其都会封装为一种finalRefernece对象. 因为finalize方法是object定义的,其默认实现为空.那么如果重写了此方法,那么方法体...
Java中final,finally,finalize三个关键字的区别_动力节点Java学院整理
Java禁止使用finalize方法共2页.pdf.zip
主要介绍了详解Java编程中final,finalize,finally的区别,这个在Java面试题中简直是太常见了...需要的朋友可以参考下
主要介绍了Java中覆盖finalize()方法实例代码,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
一,谈谈final, finally, finalize的区别。 java面试题
java.lang.object原始码最终不推荐使用java.lang.Object.finalize() 我的博客文章中的示例的Gradle源代码存储库。 在Linux Mint(SUSE Linux)上构建和测试。 由于gradle当前不支持Java 11,因此可以使用标准Java...
final 是 Java 中的关键字,它也是 Java 中很重要的一个关键字,final 修饰的类、方法、变量有不同的含义;finally 也是一个关键字,不过我们可以使用 finally 和其他关键字结合做一些组合操作; finalize 是一个不...
1.Java中finalize()的作用一主要是清理那些对象(并非使用new)获得了一块“特殊”的内存区域。程序员可以用finalize()来操作。 程序员都了解初始化的重要性,但常常会忘记同样也重要的清理工作。毕竟,谁需要清理一个...
Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作,这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。
主要介绍了Java禁止使用finalize方法,需要的朋友可以参考下
下面小编就为大家带来一篇详谈Java中Object类中的方法以及finalize函数作用。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
Java 技术允许使用finalize() 方法在垃圾收集器将对象从内存中清除出去 之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对 象调用的。它是在Object 类中定义的,因此所有的类都...
Object类 finalize 马克-to-win java视频的详细描述