【发布时间】:2009-09-02 15:01:10
【问题描述】:
在 JVM 中作为守护进程运行以垃圾收集对象的调度程序,是否可以使用 JMX 对其进行监视。我们是否有某种方法可以告诉它们现在可能会垃圾收集的对象。这样我们就可以弄清楚如果我们正在创建类的特定对象,并且实例被保存在内存中,以了解它们何时可以被垃圾收集以及它们占用了多少内存。 还有一种方法可以告诉我班级的一个实例平均占用多少内存。
我知道这个问题可能很愚蠢,但即使我们不能强制垃圾收集,我们能否在运行时找出哪些对象没有被其他对象连接(换句话说,根本没有被使用)。我们能找到弱吗?在运行时引用,有没有办法描述它。
【问题讨论】:
-
"即使我们不能强制垃圾回收" 是的,我们可以!
System.gc() -
@Marian - 调用 System.gc() 仅表明 GC 运行 - 不能保证
-
@Marian - 不,我们不能,
System.gc()不保证垃圾收集器何时运行。 -
您真的是指“使用 JMS 监控”吗?我怀疑你的意思是 JMX,因为它更适合这种监控 ;-)
-
感谢 Joachim 指出这一点。我的意思只是 JMX。
标签: java performance memory-management