我有一个Swing浏览器应用程序,其中有一个错误,当我向GUI添加/删除内存时,没有为这些对象释放内存,而我正在尝试追踪保留它们的内容.问题是我不知道如何判断什么东西实际上已从内存中完全释放.
有没有办法判断对象是否已从内存中释放?我已经习惯了Objective-C,有几种方法可以讲述.
谢谢
你不能用Java真正做到这一点.所有提到终结者的答案都不是你所追求的.
您可以做的最好的事情是在ReferenceQueue中将PhantomReference入队并进行轮询,直到您获得引用.
final ReferenceQueue rq = new ReferenceQueue();
final PhantomReference phantom = new PhantomReference( referenceToObjectYouWantToTrack, rq );
Run Code Online (Sandbox Code Playgroud)
你想在这里阅读Peter Kofler的答案(它解释了PhantomReference是什么):
非常有趣的读到这里:
http://www.kdgregory.com/index.php?page=java.refobj
基本上,我在一个项目中使用PhantomReference,在安装软件时需要计算一次非常特殊的缓存.为了有效地计算这个(基于磁盘的)缓存,需要大量的内存(越多越好).当释放大量内存时,我正在使用PhantomReference跟踪"几乎完全".
归档时间: |
|
查看次数: |
1072 次 |
最近记录: |