JProfiler 16.2:从命令行进行性能分析
JProfiler 16.2 让离线性能分析方便了许多。“离线性能分析”是指在不使用 JProfiler GUI 的情况下进行性能分析的模式。它适用于 CI 服务器、容器和生产系统。在以前的 JProfiler 版本中,必须通过命令行、借助从 JProfiler GUI 导出的配置文件将性能分析设置传递给代理,随后还需要通过 Controller API、JProfiler MBean 或 “jpcontroller” 命令行工具来执行记录命令。
对于许多场景而言,这种工作流程过于繁琐。我们现在引入了一种务实的方法:最常用的性能分析设置以及简单的自动记录序列可以直接在命令行上设置,既可以在 -agentpath VM 参数中设置,也可以在 jpenable 附加工具中设置,还可以在 Gradle 和 Ant 性能分析任务中设置。这不仅是对自动化任务的极大简化,也极大地惠及了命令行上的最新成员:AI 智能体。
只需一个 VM 参数
在此之前,启动离线性能分析的方式如下:
-agentpath:...=offline,id=<ID>,config=/path/to/jprofiler_config.xml
配置文件是由 JProfiler GUI 生成的 XML 文档。您必须在自己的机器上导出它,复制到目标机器,并在更改设置时保持同步。在容器镜像中,该文件还需要进行挂载。
对于诸如“记录 CPU 数据十分钟,然后保存快照”这样的计划,您要么必须在 GUI 中配置触发器,要么以编程方式使用 controller API,要么手动使用 jpcontroller 命令行工具执行记录。虽然这种离线性能分析方式仍将继续得到支持,但现在只有高级性能分析设置和触发器才需要用到它。
在 16.2 中,上述性能分析计划可以直接在 VM 参数中进行配置:
-agentpath:...=offline,callTreeMode=sampling,profile=com.mycorp.,\ snapshot=/tmp/snapshot.jps,recording=cpu,duration=10m
这会以采样方式启动 JVM,将性能分析范围限制在您自己的包中,记录 CPU 数据十分钟,然后保存快照。
可用的性能分析设置参数如下:
- 调用树模式(
sampling、instrumentation或async) profile、compact和ignore包过滤器lineNumbers选项
自动记录选项如下:
recording接受cpu、allocation以及诸如jdbc或http_server之类的探针名称duration,取值形如30s、10m或1h。如果省略此参数,记录将一直运行到 JVM 退出,并在关闭时保存快照delay,使用相同的时间值格式,以便让应用程序先行预热
这极大地改善了部署环境中的性能分析方式。容器镜像不再需要额外的配置文件,性能分析设置直接成为启动命令的一部分,或者包含在 JAVA_OPTS 或类似的环境变量中。要更改记录的内容,现在只需编辑部署描述符,而无需同步配置文件。
附加到正在运行的 JVM
新的简化离线性能分析流程不仅限于启动时的 VM 参数,也适用于使用 jpenable 命令行工具对已经在运行的 JVM 进行性能分析。
以交互方式启动时,其功能丰富的控制台会引导您逐步完成离线性能分析设置和自动记录序列:


对于非交互式使用,所有设置都可通过命令行选项指定,例如:
jpenable --offline --call-tree-mode=sampling --profile=com.mycorp. \ --snapshot=/tmp/snapshot.jps --recording=cpu:jdbc --duration=5m
构建系统中的性能分析
Gradle 和 Ant 性能分析任务通过任务属性提供了相同的功能:
task run(type: com.jprofiler.gradle.JavaProfile) {
mainClass = 'com.mycorp.MyMainClass'
classpath sourceSets.main.runtimeClasspath
offline = true
callTreeMode = 'sampling'
profile = ['com.mycorp.']
snapshotFile = file('build/snapshots/run.jps')
recording = ['cpu', 'allocation']
duration = '10m'
}
这使得 CI 作业可以轻松地将性能分析快照创建为构建产物,而相关配置直接包含在构建脚本中。
AI 智能体
AI 编码智能体在命令行上工作。它们运行构建、执行测试并读取日志输出,但无法通过点击完成向导操作,也无法从 GUI 导出配置文件。从 16.2 开始,智能体只需一条命令即可在命令行上完成整个性能分析会话:它们在测试调用中添加一个 VM 参数,让 JVM 在结束时保存快照,然后对结果进行分析。
结合 16.1 中的 JProfiler MCP 服务器(它会加载快照并引导智能体从热点追溯到根本原因),测量、修复和验证的整个循环现在无需任何人打开 JProfiler UI 即可运行。用户仍然可以在 GUI 中打开 .jps 快照文件来查看同一快照。