我们已经使用 jmap 大约 2 年来测量在 Java 6 下运行的大型多服务器应用程序的堆大小。我们每分钟进行一次测量。每次测量花费的(耗时)不到 1 秒。
我们现在正在 Java 7 下测试同一个应用程序。现在突然间 jmap 经常需要 10 秒、20 秒,有时甚至更长,并且在这段时间内它似乎减慢了(甚至可能停止!)JVM。
我们在 jmap 输出中看到的唯一区别(Java 6 和 Java 7 之间)是关于有多少字符串被驻留的附加信息。 (而且似乎那部分比较慢。)
有谁知道发生了什么,或者 jmap 或 Java 7 中发生了什么变化可能会导致这种情况?
我们正在测试使用“jstat -gc”来获取相同的信息,到目前为止,这似乎要快得多,而且似乎不会导致我们在使用 jmap 时看到的应用程序变慢。对于如何快速测量堆大小,还有其他建议吗?
欢迎任何想法,提前致谢。
最佳答案
我个人比较喜欢Oracle Mission Control用于监视堆大小。它有更多选项,但在监视堆大小方面很有用。
关于java - jmap 在 Java 7 下显得更慢,减慢了 JVM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23703784/