【问题标题】:How to generate histogram of Java object lifetimes如何生成 Java 对象生命周期的直方图
【发布时间】:2010-07-15 18:42:16
【问题描述】:

我有一个 Tomcat Java webapp,它在负载下会破坏 Java GC。我认为这是由于大量短寿命物体与未知数量的中等寿命物体的组合。

为了验证这个理论,我想找到一个工具,它可以让我确定所有已分配对象的对象生命周期(或每 10 个对象等以获得更好的性能)。理想情况下,最终输出将是一个直方图,显示存活时间不同的对象的相对数量。

我认为这个工具可能会构建在 Instrumentation API 或 JVMTI 之上。如果没有好的工具已经可以做到这一点,我也会感谢有关在编写此类工具时最好使用 JVM 接口的建议。

【问题讨论】:

  • 你试过 JMX + VisualVM 吗?还是探测?
  • 还对代码运行静态代码分析器。这可能会指出一些值得关注的领域。
  • Eclipse Memory Analyzer 是一款不错的免费分析器(您不必安装 Eclipse)。重新启动应用程序后,它是否会在一段时间内表现良好,或者它是否开始在大门外颠簸?后者可能表明您没有足够的可用内存。
  • 感谢这些建议 - 我很欣赏替代方案,但理想情况下,我正在寻找一种工具,它可以让我获得对象生命周期的直方图,最好是通过实例计数或实例大小。

标签: java tomcat profiling


【解决方案1】:

我现在已经开始编写一个工具来完成我最初询问的事情。当前代码可以在这里找到:

http://wiki.github.com/mchr3k/org.inmemprofiler/

到目前为止,我已经设法按实例计数获得了所有对象分配的文本直方图。这不包括以不同方式处理的数组分配。

我现在正在使用 JVMTI 添加实例大小信息以及跟踪数组分配。

【讨论】:

  • 此工具现在可以跟踪对象大小和分配跟踪。
猜你喜欢
  • 1970-01-01
  • 2012-07-28
  • 1970-01-01
  • 1970-01-01
  • 2011-04-28
  • 1970-01-01
  • 1970-01-01
  • 2011-03-16
相关资源
最近更新 更多