社区
Java SE
帖子详情
关于java的析构器问题,请教大家!
likywind
2005-11-04 01:10:40
在java里面不是有一个finalize函数吗?它是如何运行的啊?在什么时间?当时的内存是什么状态啊?
还有就是dispose的用法如何?希望高手指点啊?
...全文
116
3
打赏
收藏
关于java的析构器问题,请教大家!
在java里面不是有一个finalize函数吗?它是如何运行的啊?在什么时间?当时的内存是什么状态啊? 还有就是dispose的用法如何?希望高手指点啊?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
yanloveyan2004
2005-11-04
打赏
举报
回复
看看scjp中对gc方面有关finalize的介绍吧!
9.每一个对象都有一个finalize( )方法,这个方法是从Object类继承来的。
10.finalize( )方法用来回收内存以外的系统资源,就像是文件处理器和网络连接器。该方法的调用顺序和用来调用该方法的对象的创建顺序是无关的。换句话说,书写程序时该方法的顺序和方法的实际调用顺序是不相干的。请注意这只是finalize( )方法的特点。
11.每个对象只能调用finalize( )方法一次。如果在finalize( )方法执行时产生异常(exception),则该对象仍可以被垃圾收集器收集。
12.垃圾收集器跟踪每一个对象,收集那些不可到达的对象(即该对象没有被程序的任何"活的部分"所调用),回收其占有的内存空间。但在进行垃圾收集的时候,垃圾收集器会调用finalize( )方法,通过让其他对象知道它的存在,而使不可到达的对象再次"复苏"为可到达的对象。既然每个对象只能调用一次finalize( )方法,所以每个对象也只可能"复苏"一次。
13.finalize( )方法可以明确地被调用,但它却不能进行垃圾收集。
14.finalize( )方法可以被重载(overload),但只有具备初始的finalize( )方法特点的方法才可以被垃圾收集器调用。
15.子类的finalize( )方法可以明确地调用父类的finalize( )方法,作为该子类对象的最后一次适当的操作。但Java编译器却不认为这是一次覆盖操作(overriding),所以也不会对其调用进行检查。
16.当finalize( )方法尚未被调用时,System. runFinalization( )方法可以用来调用finalize( )方法,并实现相同的效果,对无用对象进行垃圾收集。
17.当一个方法执行完毕,其中的局部变量就会超出使用范围,此时可以被当作垃圾收集,但以后每当该方法再次被调用时,其中的局部变量便会被重新创建。
18.Java语言使用了一种"标记交换区的垃圾收集算法"。该算法会遍历程序中每一个对象的句柄,为被引用的对象做标记,然后回收尚未做标记的对象。所谓遍历可以简单地理解为"检查每一个"。
19.Java语言允许程序员为任何方法添加finalize( )方法,该方法会在垃圾收集器交换回收对象之前被调用。但不要过分依赖该方法对系统资源进行回收和再利用,因为该方法调用后的执行结果是不可预知的。
wangzhanlili
2005-11-04
打赏
举报
回复
一般情况下不用自己调用 finalize
除非你用jni 加载了其他模块,可以用 finalize 清除内存
yanloveyan2004
2005-11-04
打赏
举报
回复
finalize方法是在gc回收之前会执行,你可以在此把一此没用的资源置为null,但什么时执行finalize还得由jvm执行,因为程序员无法知道那个对象什么时被回收。看看垃圾回收方面的资料,讲得细!
java
语言程序设计
我学习了类的定义和使用。类是对象的模板,它定义了对象的属性和方法。在
Java
中,类的定义包括类名、属性(变量)和方法(函数)...但是,通过查阅资料和
请教
老师,我逐渐克服了这些困难,对
Java
语言的理解也更加深入。
c++学习之操作符重载
学习过程中,关于c++操作符重载时的中间变量是什么时候
析构
的呢?
请教
。
java
面试题
Java
面试题 一
Java
基础阶段 1.1 面向对象 面向对象的特征有哪些方面? 面向对象的特征主要有以下几个方面: 1)抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地 注意与当前目标有关的方面。...
java
线程模型-【转载】
[7]
Java
Hotspot G1 GC的一些关键技术 [8]
Java
垃圾回收权威指北 [9] [HotSpot VM]
请教
G1算法的原理 [10] [HotSpot VM] 关于incremental update与SATB的一点理解 [11]
Java
线程的6种状态及切换 [12]
Java
8 动态...
咱们从头到尾说一次
Java
垃圾回收
作者:聂晓龙(花名:率鸽)来源:微信公众号,阿里巴巴中间件上一篇:Hello Redis,我有7个
问题
想
请教
你之前上学的时候有这个一个梗,说在食堂里吃饭,吃完把餐盘端走清...
Java SE
62,629
社区成员
307,258
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章