运行 jvmtop 配置文件和 JAVA_HOME 环境变量

运行 jvmtop 配置文件和 JAVA_HOME 环境变量

笔记:看来 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!

更新1:根据 answer 中的说明,我使环境路径永久化。但错误仍然出现:

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!

更新2:我尝试在不同情况下将以下 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!”(我确保我重新登录了)。

更新3:还尝试 按照我找到的教程进行设置。结果同样不好JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64nano jvmtop.sh

更新4:我认为我的 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。

更新5:我最终决定在 jvmtop 上开一个 github 票,果然,在我这样做之后,我发现有人已经针对同样的问题这样做了: https://github.com/patric-r/jvmtop/issues/119

答案1

如何在 Ubuntu 上成功运行 jvmtop 来分析 Java 进程

首先下载并解压jvmtop,链接:https://github.com/patric-r/jvmtop

jvmtop 不能保证与 Java 8 以上的版本配合良好。为了确保您使用的是 Java 8:

apt install openjdk-8-jdk

您可以查看所有已安装的 Java 版本,并使用以下命令切换到其中一个版本:

update-alternatives --config java

确保您使用的是 Java 8。

转到下载并解压 jvmtop 的目录。

JAVA_HOME 环境变量必须指向有效的 JDK,jvmtop 才能工作。简单的方法,只需:

nano jvmtop.sh

添加至第 10 行:

JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64

或与 java 8 等效的路径。

使用命令检查要分析的进程 ID

ps -aux

找到进程 ID 后,运行:

bash jvmtop.sh --profile <PID>

您可以跳过 pid,它只会分析所有 java 进程。

相关内容