
我
PhantomReference在简单,非常专业的内存分析器中使用s来监视对象的创建和销毁。我需要他们追踪破坏。但是这种方法已经过时了。(它于2004年针对J2SE1.4编写。)专业的分析工具功能更强大,更可靠,并且JMX或代理和JVMTI等新的Java 5功能也可以用于此目的。
PhantomReferences(始终与Reference队列一起使用)优于s,
finalize但存在一些问题,因此应避免使用。主要是使对象再次可达。这可以通过终结器保护语来避免(->在’EffectiveJava’中了解更多信息)。因此它们也是 新的定稿 。
此外,
PhantomReferences
使您可以准确确定何时从内存中删除对象。实际上,它们是确定这一点的唯一方法。通常这没有什么用处,但是在某些非常特殊的情况下(例如处理大图像)可能会派上用场:如果您确定应该对图像进行垃圾回收,则可以等到它实际加载后再尝试加载下一个图像,因此避免发生可怕的OutOfMemoryError的可能性。(引自尼古拉斯。)
就像psd首先写的那样,罗迪·格林(RoedyGreen)有很好的参考文献摘要。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)