8

我考虑在生产 JVM 上运行VisualVM以查看那里发生了什么 - 由于某种原因它开始消耗过多的 CPU。

它不能导致 JVM 失败,所以我试图估计所有风险。

我在他们的网站上看到的唯一可能导致 JVM 关闭的问题与类共享和-XshareJVM 选项有关,但是在服务器模式和/或 x64 系统上未启用 afaik 类共享。

那么在生产 JVM 上运行 VisualVM 真的安全吗,如果不是的话 - 应该考虑哪些风险,以及在 JVM 上运行 VisualVM(并对其进行分析)会产生多少负载(CPU/内存) ?

谢谢

4

2 回答 2

6

AFAIK VisualVM 可用于生产,但我只会在负载较轻的服务器上使用它。您可以做的是等待服务变慢,然后在它没有使用太多时对其进行测试以查看某些集合是否大得惊人。或者您可以触发堆转储并离线分析它。

如果没有大量开销,您将无法获得方法调用的统计信息。Java 6 和 7 比 Java 5 更好,但即使使用商业分析器,它仍可能使您的应用程序速度降低 30%。

于 2012-06-28T07:17:35.500 回答
2

实际上,您可以通过使用堆栈转储获得一些信息而无需大量开销。甚至还有一个脚本可以帮助您在https://gist.github.com/851961上执行此操作

这种类型的分析是您可以获得的最少侵入性的。

于 2012-07-20T09:05:16.250 回答