首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用jmap命令时获取VMVersionMismatchException

使用jmap命令时获取VMVersionMismatchException
EN

Stack Overflow用户
提问于 2018-01-25 16:28:04
回答 3查看 8.4K关注 0票数 3

我的jdk版本是1.8.0_111,我正在读一本关于JVM的书。当我尝试命令jmap -F 6469时,抛出一个异常,如下所示:

代码语言:javascript
复制
Attaching to process ID 6469, please wait...
Error attaching to process: sun.jvm.hotspot.runtime.VMVersionMismatchException: Supported versions are 25.111-b14. Target VM is 25.152-b11
sun.jvm.hotspot.debugger.DebuggerException: sun.jvm.hotspot.runtime.VMVersionMismatchException: Supported versions are 25.111-b14. Target VM is 25.152-b11
    at sun.jvm.hotspot.HotSpotAgent.setupVM(HotSpotAgent.java:435)
    at sun.jvm.hotspot.HotSpotAgent.go(HotSpotAgent.java:305)
    at sun.jvm.hotspot.HotSpotAgent.attach(HotSpotAgent.java:140)
    at sun.jvm.hotspot.tools.Tool.start(Tool.java:185)
    at sun.jvm.hotspot.tools.Tool.execute(Tool.java:118)
    at sun.jvm.hotspot.tools.PMap.main(PMap.java:72)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at sun.tools.jmap.JMap.runTool(JMap.java:201)
    at sun.tools.jmap.JMap.main(JMap.java:130)
Caused by: sun.jvm.hotspot.runtime.VMVersionMismatchException: Supported versions are 25.111-b14. Target VM is 25.152-b11
    at sun.jvm.hotspot.runtime.VM.checkVMVersion(VM.java:227)
    at sun.jvm.hotspot.runtime.VM.<init>(VM.java:294)
    at sun.jvm.hotspot.runtime.VM.initialize(VM.java:370)
    at sun.jvm.hotspot.HotSpotAgent.setupVM(HotSpotAgent.java:431)
    ... 11 more

我的jvm版本似乎有问题,但我找不到原因。我是JVM的新手,如果有人能告诉我为什么以及如何处理它,我将不胜感激。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-01-25 21:31:01

目标进程(6469)在不同版本的JRE (1.8.0_152)下运行。

在强制模式(-F)下运行jmapjstack时,工具的JDK版本必须与目标进程的JDK版本完全相同。

详情请参见this answer

票数 8
EN

Stack Overflow用户

发布于 2020-11-05 17:15:55

我在更改java路径后,在ubuntu上解决了这个问题。

编辑java路径

sudo gedit /etc/profile

更改java路径

export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 (设置您使用的java版本的java路径)

重新启动系统。

票数 0
EN

Stack Overflow用户

发布于 2020-11-27 20:37:30

在Windows上可以使用psexec,所以我们不需要使用-F选项。因此,您不必为jhat和java进程使用完全相同的jdk版本。

当相同版本的jdk不可用时,这很有用。例如,在一个较大的组织中,有时人们只更新jvm,而不在生产系统上安装相同的jdk。

psexecPsTools捆绑包的一部分。你可以找到他们的here。下面是该命令的外观:

代码语言:javascript
复制
F:\Programs\PSTools\PsExec.exe -s jmap.exe <pid>

即使使用psexec,也可能需要足够的权限。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48438539

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档