gpt4 book ai didi

java - 如何判断 Java 对象的内存何时释放?

转载 作者:IT王子 更新时间:2023-10-28 23:39:03 28 4
gpt4 key购买 nike

我有一个带有错误的 Swing 浏览器应用程序,当我在 GUI 中添加/删除时,没有为这些对象释放内存,我正在尝试追踪它们持有的内容。问题是我不知道如何判断某些东西何时真正从内存中完全释放。

有没有办法判断一个对象是否已从内存中释放?我已经习惯了 Objective-C,有几种方法可以告诉我。

谢谢

最佳答案

你不能在 Java 中真正做到这一点。所有提到终结器的答案都不是你想要的。

您能做的最好的事情就是将 PhantomReference 排入 ReferenceQueue 并轮询,直到获得引用。

final ReferenceQueue rq = new ReferenceQueue();
final PhantomReference phantom = new PhantomReference( referenceToObjectYouWantToTrack, rq );

您想在这里阅读 Peter Kofler 的回答(它解释了 PhantomReference 是什么):

Have you ever used Phantom reference in any project?

在这里阅读非常有趣:

http://www.kdgregory.com/index.php?page=java.refobj

基本上,我在一个项目中使用 PhantomReference,在该项目中,需要在安装软件时计算一次非常特殊的缓存。为了有效地计算这个(基于磁盘的)缓存,需要大量的内存(越多越好)。当释放大量内存时,我正在使用 PhantomReference 来“几乎准确地”跟踪。

关于java - 如何判断 Java 对象的内存何时释放?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3461010/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com