注意:似乎 jvmtop 被 Java 11 破坏了。如果安装和执行的说明很清楚,我也会接受 Ubuntu 20.04(仅限终端)和 Java 11 的替代 Java 进程分析选项。
jvmtop 要求JAVA_HOME
环境变量指向一个有效的 JDE。
我试图JAVA_HOME
在~/.profile
的最后一行进行设置:
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64/bin
所以它是永久性的。
但是,在执行时:bash jvmtop.sh --profile <PID>
我得到了这个:/usr/lib/jvm/java-11-openjdk-amd64/bin seems to be no JDK!
Update1:由于答案的说明,我使环境路径永久化。但是仍然出现错误:
network@ns3009333:~/jvmtop$ echo $JAVA_HOME
/usr/lib/jvm/java-11-openjdk-amd64/bin
network@ns3009333:~/jvmtop$ bash jvmtop.sh --profile 7435
/usr/lib/jvm/java-11-openjdk-amd64/bin seems to be no JDK!
Update2:我尝试在不同的场合将以下 3 个命令附加到 ~/.profile:
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64/bin
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64/
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
消息仍然是“似乎没有 JDK!” (我确保我重新登录)。
Update3:还尝试了设置
JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
,
nano jvmtop.sh
如我发现的教程中所示。同样的负面结果。
Update4:我认为我的 JDE 可能没有正确安装,所以我重新安装了 Java JDK 和 JDE。我目前已经完全安装了 java 11 并确认可以正常工作(没有其他 java 版本,只有 11)。我还验证了/usr/lib/jvm/java-11-openjdk-amd64
路径指向的文件夹确实存在并且有内容。
我还尝试同时执行 jvmtop.sh./
并且bash
错误消息是相同的。
当前设置是:
JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
添加到
nano jvmtop.sh
第 10 行,然后执行指向有效进程 ID 的 jvmtop.sh。
Update5:我终于决定在 jvmtop 上打开一个 github 票,当然,在我这样做之后,我发现有人已经在同一个问题上这样做了: https ://github.com/patric-r/jvmtop/问题/119
如何在 Ubuntu 上成功运行 jvmtop 来分析 Java 进程
首先下载并解压jvmtop,链接:https ://github.com/patric-r/jvmtop
jvmtop 不能保证与 8 以上的 Java 版本一起工作。为了确保您使用的是 Java 8:
您可以看到所有已安装的 java 版本,并使用以下命令切换到其中之一:
确保您使用的是 java 8。
转到您下载并解压缩 jvmtop 的目录。
JAVA_HOME 环境变量必须指向有效的 JDK,jvmtop 才能工作。简单的方法,只是:
添加到第 10 行:
或 java 8 的等效路径。
使用命令检查要分析的进程 ID
找到进程 ID 后,运行:
您可以跳过 pid,它只会分析所有 java 进程。