【发布时间】:2010-07-15 18:42:16
【问题描述】:
我有一个 Tomcat Java webapp,它在负载下会破坏 Java GC。我认为这是由于大量短寿命物体与未知数量的中等寿命物体的组合。
为了验证这个理论,我想找到一个工具,它可以让我确定所有已分配对象的对象生命周期(或每 10 个对象等以获得更好的性能)。理想情况下,最终输出将是一个直方图,显示存活时间不同的对象的相对数量。
我认为这个工具可能会构建在 Instrumentation API 或 JVMTI 之上。如果没有好的工具已经可以做到这一点,我也会感谢有关在编写此类工具时最好使用 JVM 接口的建议。
【问题讨论】:
-
你试过 JMX + VisualVM 吗?还是探测?
-
还对代码运行静态代码分析器。这可能会指出一些值得关注的领域。
-
Eclipse Memory Analyzer 是一款不错的免费分析器(您不必安装 Eclipse)。重新启动应用程序后,它是否会在一段时间内表现良好,或者它是否开始在大门外颠簸?后者可能表明您没有足够的可用内存。
-
感谢这些建议 - 我很欣赏替代方案,但理想情况下,我正在寻找一种工具,它可以让我获得对象生命周期的直方图,最好是通过实例计数或实例大小。