java VisualVM在生产中?
我考虑运行一个生产JVM的运行VisualVM,看看那里发生了什么,由于某种原因,它消耗了太多的CPU。p>
它一定不会导致JVM失败,所以我试图估计所有的风险
我在他们的site上看到的唯一可能导致JVM崩溃的问题是类共享和-Xshare
JVM选项,但是在服务器模式和/或x64系统上没有启用afaik类共享
这样,运行VisualVM对生产JVM是否真的安全,如果它不是-什么是一个人应该考虑的风险,以及多少负载(CPU /内存)运行VisualVM反对JVM(和它的剖析)?p>
谢谢
# 1 楼答案
AFAIK VisualVM可以在生产环境中使用,但我只会在负载较轻的服务器上使用它。你可以做的是等待服务的速度变慢,然后在它没有被使用的时候测试它,看看是否有一些集合是惊人的大。也可以触发堆转储并脱机分析
而且,如果没有显著的开销,就无法获得方法调用的统计信息。Java6和Java7比Java5好,但即使使用商业分析器,它仍然会使应用程序的速度降低30%
# 2 楼答案
事实上,通过使用堆栈转储,您可以在没有大量开销的情况下获得一些信息。甚至有一个脚本可以帮助您在https://gist.github.com/851961执行此操作
这种类型的分析是您所能得到的干扰最小的分析