为什么即使启用了NMT,JCMD也会抛出“本机内存跟踪未启用”消息?

时间:2017-02-17 10:28:52

标签: java hotspot

我正面临这个奇怪的问题。我想跟踪JVM的本机内存使用情况。我按照Oracle doc中提供的说明添加了NMT启用标志和循环使用的Tomcat JVM。之后当我尝试使用JCMD查看本机内存使用情况时,我得到了“本机内存跟踪未启用”消息。你觉得我错过了什么吗?

Here is the screen print

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。假设您在linux-like-OS(例如RHEL)中遇到了这个问题;发生此问题的原因是,出于安全原因,操作系统不允许与Java进程关联的用户ID以外的任何用户ID连接到jvm。我必须以jcmd命令作为进程用户执行sudo。就我而言,tomcat服务以“ userXXX”用户身份执行。当我执行下面的cmd时,我能够从Java进程中获得响应。 sudo -u userXXX jcmd {pid} VM.native_memory摘要比例= KB