Java Visual VM 是否会影响受监控 JVM 的性能?

Man*_*nns 4 java visualvm

我正在考虑使用 Java Visual VM 来分析生产环境。我想监控:

  • CPU使用率
  • GC活动
  • 已用堆
  • 线程状态

这种监控对 JVM 的性能有什么重大影响吗?

Jon*_*han 5

根据我的经验,除非您使用分析器,否则没有明显的减速。对于分析器模式,性能影响是否显着取决于您的过滤器。采样器是一个更安全的选择,但是您必须意识到,启用其中任何一个都会触发一些热代码替换,这会导致系统在短时间内无法使用(并且也可能触发那个:JDK7 应用程序变慢经过一些正常运行时间)。

当然,如果你只是想获得基本信息(内存、cpu-graph、gc 和线程数),影响会更低。

我的答案有多确定?我已经使用 JVisualVM、JProfiler 和 YourKit 将近 10 年了。我们在客户的生产代码(一个常规的 web 应用程序)中使用了 yourkit(它与 jvisualVM 做的事情基本相同)中的采样/监控模式来分析性能错误。它没有任何显着的影响。

但是,如果您只需要基本的系统监控,可能有更合适的产品可以考虑,例如 java melody ( https://github.com/javamelody/javamelody/wiki ) 或 kieker ( http://kieker-monitoring.net/ ) .