我们使用 jmap 来测量在 Java 6 下运行的大型多服务器应用程序的堆大小已经有 2 年了。我们每分钟进行一次测量。每次测量(经过时间)不到 1 秒。
我们现在正在 Java 7 下测试同一个应用程序。现在突然间 jmap 经常需要 10 秒、20 秒,有时甚至更长,并且在那段时间里它似乎减慢了 JVM 的速度(甚至可能停止!)。
我们在 jmap 输出中看到的唯一区别(在 Java 6 和 Java 7 之间)是关于有多少字符串被实习的附加信息。(这似乎是较慢的部分。)
有谁知道发生了什么,或者 jmap 或 Java 7 中发生了什么变化可能导致这种情况?
我们正在测试使用“jstat -gc”来获取相同的信息,到目前为止,这似乎要快得多,并且似乎不会导致我们在 jmap 中看到的应用程序变慢。关于如何快速测量堆大小还有其他建议吗?
欢迎任何想法,在此先感谢。