我有一个Tomcat Java webapp,它在加载时会破坏Java GC。我认为这是由于大量短寿命物体和未知数量的中等长寿命物体的组合。
为了验证这个理论,我想找到一个工具,它可以让我确定所有已分配对象的对象生存期(或者每个第10个对象等以获得更好的性能)。理想情况下,最终输出将是一个直方图,显示在不同时间内生活的对象的相对数量。
我认为这个工具很可能建立在Instrumentation API或JVMTI之上。如果没有好的工具已经做到了这一点,我也会感谢有关在编写这样的工具时最好使用哪个JVM接口的建议。
答案 0 :(得分:0)
我现在开始编写一个工具来完成我最初提出的问题。目前的代码可以在这里找到:
http://wiki.github.com/mchr3k/org.inmemprofiler/
到目前为止,我已经设法通过实例计数得到所有对象分配的文本直方图。这不包括以不同方式处理的数组分配。
我现在正致力于使用JVMTI添加实例大小信息以及跟踪数组分配。