【问题标题】:Does java garbage scheduler depict it details in some form?java垃圾调度程序是否以某种形式描述了它的细节?
【发布时间】: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


【解决方案1】:

你问的叫垃圾回收调优,网上有很多资源,比如this

具体来说,您可以使用一些应用程序来监控 Java 应用程序的内存行为,例如 VisualVM。您还可以通过在命令行中添加以下标志来使 VM 将所有垃圾收集打印到文件中:

 -verbose:gc
 -XX:+PrintGCTimeStamps
 -XX:+PrintGCDetails

然后使用gcviewerpmat等分析应用程序对其进行分析。

【讨论】:

    【解决方案2】:

    为此使用分析器 - 查看Visual VM

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-26
      • 2015-08-11
      • 2018-05-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-18
      • 2014-12-21
      相关资源
      最近更新 更多