当前位置: 首页 > 面试题库 >

是否可以“查看”对象图进行垃圾回收?

有宏邈
2023-03-14
问题内容

我有一个Java应用程序正在泄漏内存。我知道在垃圾回收期间哪些对象没有被释放,但是我无法确定引用它们的对象。

JVM内部保存的对象图是否具有某种可见性?

否则就有可能找出哪些对象引用了另一个对象?


问题答案:

在真正的基础上,您可以使用命令jhat和jmap从正在运行的Java进程中读取堆文件,然后对其进行处理-
它在本地端口上启动小型Web服务器。它并不是很容易阅读,但是您不必购买分析器就可以使用它。



 类似资料:
  • 问题内容: 有没有一种方法可以检查垃圾收集器是否可以提取对象? 在我的代码中的某个地方,我有一个对象的引用: 然后,通过Eclipse Debugger,获得对象的存储位置。之后,我将引用设置为null: 有什么方法可以检查以前引用的对象现在是否适合垃圾回收,或者是否有其他引用? 非常感谢, 斯特凡 问题答案: 您无法在运行时使用任意对象执行此操作,实际上,不可能完全确定地执行此操作。但是,有两种

  • 问题内容: 在Java中,我做了很多类似的事情而没有考虑太多: 但是,最近我不确定这样做是否安全。毕竟,在对象创建之后就没有对它的引用了(嗯,有引用,但是这个值吗?),所以看起来存在垃圾回收器可能会在执行过程中删除该对象的危险的东西。因此,该方法应如下所示: 现在,我很确定第一个版本可以使用,并且我从未遇到任何问题,但是我想知道在所有情况下这样做是否安全(不仅在特定的JVM中,而且最好根据语言规范

  • 问题内容: 给定仅在程序设置中使用的假设实用程序类: 不再使用myObject时会对其进行垃圾回收,还是在程序的生命周期内始终存在? 问题答案: 加载类时,不能选择静态变量进行垃圾回收。当各自的类加载器(负责加载此类)本身被收集为垃圾时,可以收集它们。 查看JLS第12.7节卸载类和接口 仅当垃圾回收器可以回收定义的类加载器时,才可以卸载类或接口。引导加载器加载的类和接口可以不卸载。

  • 在Java中,我没有多想就做了以下事情: 然而,最近我变得不确定这样做是否安全。毕竟,在创建对象之后,没有对该对象的引用(嗯,有引用,但这算不算?),因此看起来垃圾回收器可能会在执行某项内容时删除该对象。因此,方法应该如下所示:

  • 问题内容: 我是Java的新手。我现在正在学习WeakReference的概念。我遇到一个可能看起来很愚蠢的问题,但我只是想找出原因。问题是:根据Java文档,“弱引用对象,它们不会阻止对其引用进行最终化,最终确定和回收”。 所以我做了这个小测试: 但是,我注意到在GC运行之后,仍然可以返回我期望为null的对象,并且该方法未被调用。那么出了什么问题?感谢您的提前帮助!:) 问题答案: 测试的前提

  • 问题内容: 我要求显式垃圾回收器调用。但是窗口并没有从屏幕上消失,为什么垃圾回收器不回收JFrame的对象? 问题答案: 当被创建时,它注册本身在一些内部摇摆的数据结构,其允许它接收到类似的鼠标点击的事件。这意味着在您告诉Swing使用摆脱窗口之前,存在对潜伏在某处的对象的引用。