在命令行中剖析正在运行的Java应用程序

我常常使用VisualVM配置运行的Java应用程序,但它需要X在机器上运行

我知道我可以通过管理端口连接,但这将是一个离线取样分析,这是不够的我。

所以我正在寻找一个解决方案,我可以从命令行概述运行Java应用程序的方法的CPU使用率。对我来说,足够在服务器上收集数据,然后可以在不同的机器上分析收集的数据。

更新:

看来我需要更具体。我想从命令行配置一个正在运行的Java应用程序,我不想停止它,重新运行它。

最佳答案
jvmtop是一个从命令行进行概要分析的方便工具。不需要停止jvm:

jvmtop.sh --profile <PID>

将给你这样的输出将在应用程序运行时更新:

  Profiling PID 24015: org.apache.catalina.startup.Bootstrap
  36.16% (    57.57s) hudson.model.AbstractBuild.calcChangeSet()
  30.36% (    48.33s) hudson.scm.SubversionChangeLogParser.parse()
   7.14% (    11.37s) org.kohsuke.stapler.jelly.JellyClassTearOff.parseScript()
  ...

其优点是它不需要使用仪器。将被改变的jvm的类将不被改变。

转载注明原文:在命令行中剖析正在运行的Java应用程序 - 代码日志