我考虑对生产JVM运行VisualVM以查看其中发生了什么 - 由于某种原因它开始消耗太多CPU。
它不能导致JVM失败,所以我试图估计所有的风险。
我在site上看到的唯一可能导致JVM失效的问题与类共享和-Xshare
JVM选项有关,但是在服务器模式和/或上没有启用afaik类共享x64系统。
因此,对生产JVM运行VisualVM是非常安全的,如果不是 - 应该考虑哪些风险,以及对JVM运行VisualVM的负载(CPU /内存)(以及使用它进行分析)戴上它?
由于
答案 0 :(得分:7)
AFAIK VisualVM可以在生产中使用,但我只会在轻载的服务器上使用它。你可以做的是等待服务放慢速度,之后当它没有用尽那么多的时候测试一下它是否有些惊人的大。或者您可以触发堆转储并离线分析。
在没有大量开销的情况下,您无法获得方法调用的统计信息。 Java 6和7比java 5更好,但它仍然可以使你的应用程序减慢30%甚至是商业分析器。
答案 1 :(得分:2)
实际上,通过使用堆栈转储,您可以获得一些信息,而不会产生大量开销。甚至还有一个脚本可以帮助您在https://gist.github.com/851961
执行此操作这种类型的分析是您可以获得的最少侵入性。