JProfiler帮助文档Download

用于分析的命令行可执行文件


JProfiler 包含许多命令行工具,用于设置分析代理和从命令行控制分析操作。

将分析代理加载到正在运行的 JVM 中

使用命令行工具 bin/jpenable,您可以将分析代理加载到任何版本为 6 或更高的正在运行的 JVM 中。通过命令行参数,您可以自动化该过程,使其无需用户输入。支持的参数有:

用法: jpenable [选项]

jpenable 在选定的本地 JVM 中启动分析代理,以便您可以从不同的计算机连接
到它。如果 JProfiler GUI 在本地运行,您可以直接从 JProfiler GUI 附加,而无需运行此可执行文件。

* 如果没有给出参数,jpenable 会尝试发现尚未被分析的本地 JVM,并在命令行上
  请求所有必需的输入。
* 使用以下参数,您可以在命令行上部分或完全提供整个用户输入:

  -d  --pid=<PID>     应该被分析的 JVM 的 PID
  -n  --noinput       在任何情况下都不要求用户输入
  -h  --help          显示此帮助
      --options=<OPT> 传递给代理的调试选项

  GUI 模式: (默认)
  -g  --gui           将使用 JProfiler GUI 附加到 JVM
  -p  --port=<nnnnn>  分析代理应监听 JProfiler GUI 连接的端口
  -a  --address=<IP>  分析代理应监听的地址。没有此参数,附加仅可能从 localhost。使用
                      0.0.0.0 监听所有地址

  离线模式:
  -o  --offline       JVM 将在离线模式下被分析
  -c  --config=<PATH> 配置文件的路径,其中包含分析设置
  -i  --id=<ID>       配置文件中的会话 ID。如果配置文件仅包含一个会话,则不需要。

请注意,JVM 必须以与 jpenable 相同的用户身份运行,否则 JProfiler 无法连接到它。
一个例外是 Windows 服务将运行在本地系统账号下,如果你
与 jpenable 交互的方式列出它们。

保存 HPROF 快照

如果您只需要堆快照,可以考虑使用 bin/jpdump 命令行工具,该工具可以在不将分析代理加载到 VM 中的情况下保存 HPROF 快照

用法: jpdump [options]

jpdump 将一个本地运行JVM中的堆,转储到一个文件。
Hotspot 虚拟机生成HPROF文件, OpenJ9 虚拟机生成PHD文件。
然后HPROF 和 PHD 文件可以在JProfiler GUI中打开。

* 如果没有提供参数,jpdump 将列出所有本地运行的 JVM。
* 你可以提供以下部分或全部参数
  用户在命令行输入:

  -p  --pid=<PID>    指定要做堆转储的 JVM
                     的 PID, 不会再被问及其他问题
  -a  --all          保存所有对象。如果未指定,则只有活性对象会被
                     转储
  -f  --file=<PATH>  转储文件路径。如果未指定,转储文件
                     <VM name>.hprof 会被写到当前路径下。
                     如果文件已经存在,会追加一个数字。
  -h  --help         显示该帮助信息

注意,运行JVM的用户必须和运行jpdump的用户相同,否则
JProfiler 无法连接JVM。
一个例外是 Windows 服务将运行在本地系统账号下,如果你
与 jpdump 交互的方式列出它们。

这比加载分析代理并保存 JProfiler 堆快照的开销更低。此外,由于分析代理永远无法卸载,因此此方法适用于在生产中运行的 JVM。

控制分析代理

当您在没有参数的情况下启动 bin/jpcontroller 可执行文件时,它会尝试连接到本地机器上的被分析 JVM。如果发现多个被分析的 JVM,您可以从列表中选择一个。

jpcontroller 只能连接到已设置分析设置的 JVM,因此如果 JVM 是使用 -agentpath VM 参数的 "nowait" 选项启动的,它将无法工作。该选项是在集成向导的 "启动模式" 屏幕上选择 立即启动,稍后使用 JProfiler GUI 连接 单选按钮时设置的,并且尚未有 JProfiler GUI 连接到代理。使用 jpenable 而不带 --offline 参数也需要 JProfiler GUI 的连接,才能让 jpcontroller 连接到被分析的进程。

如果您想连接到远程计算机上的进程,或者 JVM 不是版本为 6 或更高的 HotSpot JVM,您必须将 VM 参数 -Djprofiler.jmxServerPort=[port] 传递给被分析的 JVM。MBean 服务器将在该端口上发布,您可以将选择的端口作为参数传递给 jpcontroller。使用附加的 VM 参数 -Djprofiler.jmxPasswordFile=[file],您可以指定一个包含键值对形式的属性文件 user password 来设置身份验证(用空格或制表符分隔)。注意,这些 VM 参数会被 com.sun.management.jmxremote.port VM 参数覆盖。

通过显式设置 JMX 服务器,您可以使用命令行控制器通过调用 jpcontroller host:port 连接到远程服务器。如果远程计算机只能通过 IP 地址访问,您必须将 -Djava.rmi.server.hostname=[IP address] 作为 VM 参数添加到远程 VM。

默认情况下,jpcontroller 是一个交互式命令行工具,但您也可以使用它自动化分析会话,而无需手动输入。自动调用将传递 [pid | host:port] 以选择被分析的 JVM 以及 --non-interactive 参数。此外,还会从 stdin 或通过 --command-file 参数指定的命令文件中读取命令列表。每个命令都从新行开始,空行或以 "#" 注释字符开头的行将被忽略。

此非交互模式的命令与 JProfiler MBean 中的方法名称相同。它们需要相同数量的参数,用空格分隔。如果字符串包含空格,则必须用双引号括起来。此外,还提供了一个 sleep <seconds> 命令,用于暂停指定的秒数。这允许您开始记录,等待一段时间,然后将快照保存到磁盘。

请注意,分析设置必须在分析代理中设置。这会在您使用 JProfiler UI 连接时发生。如果您从未使用 JProfiler UI 连接,则必须在启动命令中手动设置它们或使用 jpenable,请参阅 有关在启动时设置分析设置的帮助主题 以获取更多信息。

jpcontroller 的支持参数如下所示:

用法: jpcontroller [options] [host:port | pid]

* 如果没有提供任何参数, jpcontroller 将尝试发现
   正在被分析的本地 JVM
* 如果指定了一个数字, 则 jpcontroller 将尝试连接到
   进程 ID 为 [pid] 的 JVM。 如果该 JVM 未被分析, jpcontroller 将无法
   连接。 在这种情况下, 首先使用 jpenable 实用程序。
* 除此之外, jpcontroller 将连接到 "host:port", port 已经
   在被分析 JVM 的 VM 参数 -Djprofiler.jmxServerPort=[port]
   中指定过。

可以使用以下参数选项(options):
  -n --non-interactive      运行一个从标准输入(stdin)
                            读取命令列表的自动会话
  -f --command-file=<PATH>  从一个文件而不是标准输入(stdin)读取命令, 仅当和
                            --non-interactive 一块使用。

非交互命令的语法:
  请参见 RemoteControllerMBean (https://bit.ly/2DimDN5) 的 javadoc
  操作列表。 各参数以空格分割,如果某个参数含有空格
  必须使用引号引起来。 例如:

    addBookmark "Hello world"
    startCPURecording true
    startProbeRecording builtin.JdbcProbe true true
    sleep 10
    stopCPURecording
    stopProbeRecording builtin.JdbcProbe
    saveSnapshot /path/to/snapshot.jps

  sleep <seconds> 命令暂停指定的秒数。
  空行和以 # 开头的行将被忽略。