在JDK-8 java进程上使用JDK-11运行jcmd未成功运行

在JDK-8 java进程上使用JDK-11运行jcmd未成功运行,java,jcmd,Java,Jcmd,我试图使用jcmd监视tomcat的本机内存,但出现以下异常: 命令:jcmd 14533 VM.native_内存摘要 我已经安装了2个jdk的jdk-11和jdk-8 Tomcat是通过jdk-8运行的,jcmd使用了jdk-11,然后我得到了以下异常: com.sun.tools.attach.AttachNotSupportedException: Unable to open socket file /proc/31752/root/tmp/.java_pid31752: target

我试图使用jcmd监视tomcat的本机内存,但出现以下异常: 命令:
jcmd 14533 VM.native_内存摘要

我已经安装了2个
jdk的
jdk-11
jdk-8

Tomcat是通过
jdk-8
运行的,jcmd使用了
jdk-11
,然后我得到了以下异常:

com.sun.tools.attach.AttachNotSupportedException: Unable to open socket file /proc/31752/root/tmp/.java_pid31752: target process 31752 doesn't respond within 10500ms or HotSpot VM not loaded
    at jdk.attach/sun.tools.attach.VirtualMachineImpl.<init>(VirtualMachineImpl.java:100)
    at jdk.attach/sun.tools.attach.AttachProviderImpl.attachVirtualMachine(AttachProviderImpl.java:58)
    at jdk.attach/com.sun.tools.attach.VirtualMachine.attach(VirtualMachine.java:207)
    at jdk.jcmd/sun.tools.jcmd.JCmd.executeCommandForPid(JCmd.java:114)
    at jdk.jcmd/sun.tools.jcmd.JCmd.main(JCmd.java:98)
com.sun.tools.attach.AttachNotSupportedException:无法打开套接字文件/proc/31752/root/tmp/.java_pid31752:目标进程31752在10500ms内没有响应或未加载热点VM
位于jdk.attach/sun.tools.attach.VirtualMachineImpl.(VirtualMachineImpl.java:100)
位于jdk.attach/sun.tools.attach.AttachProviderImpl.attachVirtualMachine(AttachProviderImpl.java:58)
位于jdk.attach/com.sun.tools.attach.VirtualMachine.attach(VirtualMachine.java:207)
jdk.jcmd/sun.tools.jcmd.jcmd.executeCommandForPid(jcmd.java:114)
jdk.jcmd/sun.tools.jcmd.jcmd.main(jcmd.java:98)

我使用java进程启动了
-XX:+startTachListener
,但它不起作用。

这可能是用户权限问题:jmap必须与java进程使用同一用户运行。e、 g.如果所有者是
usera
,并且它正在包含的docker中运行,则以用户
usera
身份执行jmap

docker exec --user usera -it container_id jmap -dump:format=b,file=/home/usera/memorydump.bin 1

这可能是一个用户权限问题:jmap必须与java进程使用相同的用户运行。e、 g.如果所有者是
usera
,并且它正在包含的docker中运行,则以用户
usera
身份执行jmap

docker exec --user usera -it container_id jmap -dump:format=b,file=/home/usera/memorydump.bin 1
希望这可能有帮助:希望这可能有帮助: