首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >垃圾收集器和finalize()方法

垃圾收集器和finalize()方法
EN

Stack Overflow用户
提问于 2010-02-05 03:31:55
回答 3查看 422关注 0票数 1

你们可能会认为,在15-20分钟内,我已经问了4-5个关于同一主题的问题,所以我可能需要一个关于这个的教程。但我是通过阅读GC得到这些问题的。

所以我的问题是,即使同一个对象在其finalize()方法中不符合垃圾收集的条件,GC也只会在实例的生命周期中调用finalize()方法一次。所以我想知道GC在第二次收集finalize()方法时如何知道它已经执行过finalize()方法

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-02-05 03:56:12

老实说,如果你忘记了终结器的存在,你的生活会好很多。我编写Java已经有很多年了,从来没有理由使用终结器。

他们很慢,没有明确的定义(有时他们永远不会跑!),而且通常是皮塔。

如果您正在管理外部资源,请执行类似于Closeable接口的操作,并使用try{} finally{}块进行清理。否则,尽您所能地相信该语言会在其自身之后清理内存。

票数 4
EN

Stack Overflow用户

发布于 2010-02-05 03:43:24

依赖于实现。假设VM在每个对象上都有一个保密位,或者有一个包含已经“完成”的对象的表。如果我必须猜测,我会说后者,因为假设仍然存在的已经完成的对象集预计会很小,所以在系统中的每个对象上设置一点似乎有点浪费。

票数 1
EN

Stack Overflow用户

发布于 2010-02-05 03:48:50

又是你:)

请注意,在终结器的主题上,如果您确实使用JVMTI的ForceGargabeCollection强制强制执行GC,则需要特别说明:a GC:

“此函数不会导致运行终结器。”

再说一次,你可能并不是真的想这么做,但是如果你有JVMTI和5个关于GC的问题,你会认为不断重复使用2K+的ForceGarbageCollection是很有趣的,你真的可以一个GC。

强制GC的权威信息:

http://java.sun.com/javase/6/docs/platform/jvmti/jvmti.html#ForceGarbageCollection

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2202557

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档