- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
关于 PhantomReference
我唯一知道的是,
get()
方法,它将始终返回 null
而不是对象。有什么用?PhantomReference
,您可以确保对象无法通过 finalize
方法复活。But what is the use of this concept/class?
Have you ever used this in any of your project or do you have any example where we should use this?
最佳答案
我在 simplistic, very specialized kind of memory profiler 中使用了 PhantomReference
监视对象的创建和销毁。我需要他们跟踪破坏情况。但这种方法已经过时了。 (它是在 2004 年针对 J2SE 1.4 编写的。)专业的分析工具更加强大和可靠,更新的 Java 5 特性如 JMX 或代理和 JVMTI 也可以用于此。
PhantomReference
(始终与 Reference 队列一起使用)优于 finalize
,后者存在一些问题,因此应避免使用。主要是让对象再次可达。这可以通过终结器守护者习语来避免(-> 在“Effective Java”中阅读更多内容)。所以它们也是新的finalize。
此外,PhantomReference
allow you to determine exactly when an object was removed from memory. They are in fact the only way to determine that. This isn't generally that useful, but might come in handy in certain very specific circumstances like manipulating large images: if you know for sure that an image should be garbage collected, you can wait until it actually is before attempting to load the next image, and therefore make the dreaded OutOfMemoryError less likely. (Quoted from enicholas.)
作为psd先写,Roedy Green 有一个good summary of references .
关于java - 你曾经在任何项目中使用过 PhantomReference 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10491964/
当我使用 Google 可视化库创建可视化时,这是一个持续的恶化: 此图的左侧和右侧至少有 75 像素,顶部和底部还有 30-40 像素。馅饼本身没有理由不能更大,当我提供足够的空间时,右边的图例也没
我正在将我的应用程序转移到另一台服务器,但我遇到了一些似乎没有过期的 PHP session 问题。 在 php.ini 中我设置了: session.gc_probability = 1 sessi
关闭。这个问题需要更多 focused 。它目前不接受答案。 想要改进这个问题?更新问题,使其只关注 editing this post 的一个问题。 关闭 9 年前。 Improve this q
有时在项目结束时我会想“哇,我刚刚为那个项目写了很多行代码。”但我永远不知道到底有多少。 有什么方法可以实际列出自创建以来添加到 repo 中的所有代码行吗? 我认为那种东西看起来会很有趣。 编辑:我
我并不完全理解 Apple 的 iOS 4 模型,我已经研究了几个小时的文档,但我仍然感谢一些帮助。 后台 iPhone 应用程序会退出吗?例如,当我关闭 Loopt 等位置跟踪应用程序时,它将进入后
一些背景 我目前正在开发一个移动网站,因此我一直在 Firefox 中使用 User Agent switcher 切换用户代理。 (可爱的插件)。但是当我转到管理站点时,它呈现为 WML ,这让 F
我是一名优秀的程序员,十分优秀!