java - 在命令行中分析正在运行的 Java 应用程序

标签 java performance command-line jvm profiling

我经常使用 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 的类不会被改变。

如果您正在寻找更直观的东西,请查看 jvm-mon这是基于jvmtop的

关于java - 在命令行中分析正在运行的 Java 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6846049/

相关文章:

java - MVVM MediatorLiveData观察者onchanged被调用多次

java - 填充 ListView 给了我奇怪的符号

java - ArrayList 的二维 arrayList

java - 是否应该实例化实用程序类?

python - 抑制 argparse 错误消息 - Python

java - 由于 "input line is too long",在 Windows 上运行 .bat 文件时出现问题

java - 如何分割XML字符串?

android - Android Gradle构建需要大量时间来执行代码

performance - 构建高性能计算系统

macos - 如何在 Macos 上从命令行在 Sublime 3 中打开文件