使用jinfo出現「can't determine target's VM version」問題解決方法

JINFO命令輸出給定的java進程的全部配置信息java

JPS命令是列出當前全部的java進程web

[root@harlan-web ~]# jps
11204 Bootstrap
76116 Jps

查看Bootstrap中的全部配置信息apache

[root@harlan-web ~]# jinfo 11204
Attaching to process ID 11204, please wait...
Error attaching to process: java.lang.RuntimeException: can't determine target's VM version : field "_reserve_for_allocation_prefetch" not found in type Abstract_VM_Version
sun.jvm.hotspot.debugger.DebuggerException: java.lang.RuntimeException: can't determine target's VM version : field "_reserve_for_allocation_prefetch" not found in type Abstract_VM_Version
        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.JInfo.main(JInfo.java:138)
        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.jinfo.JInfo.runTool(JInfo.java:108)
        at sun.tools.jinfo.JInfo.main(JInfo.java:76)
Caused by: java.lang.RuntimeException: can't determine target's VM version : field "_reserve_for_allocation_prefetch" not found in type Abstract_VM_Version
        at sun.jvm.hotspot.runtime.VM.<init>(VM.java:291)
        at sun.jvm.hotspot.runtime.VM.initialize(VM.java:370)
        at sun.jvm.hotspot.HotSpotAgent.setupVM(HotSpotAgent.java:431)
        ... 11 more

上述紅色的字體提示找不到VM的版本信息。oracle

查看環境中的JDK版本信息jvm

查看當前環境的JDK版本,版本爲12.0.1字體

[root@harlan-web ~]# java -version
java version "12.0.1" 2019-04-16
Java(TM) SE Runtime Environment (build 12.0.1+12)
Java HotSpot(TM) 64-Bit Server VM (build 12.0.1+12, mixed mode, sharing)

查看jinfo所使用的JDK版本,版本爲1.8.0fetch

 

由至推斷,jinfo的JDK的版本與java進程使用JDK版本不一致。 ui

解決方法:url

知道了問題所在,使兩個版本的JDK進行統一。spa

從新將當前環境的JAVA的JDK統一爲1.8.0版本

ln -sf /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.262.b10-0.el7_8.x86_64/bin/java /etc/alternatives/java
[root@harlan-web ~]# java -version
openjdk version "1.8.0_262"
OpenJDK Runtime Environment (build 1.8.0_262-b10)
OpenJDK 64-Bit Server VM (build 25.262-b10, mixed mode)

而後,再次使用jinfo命令

[root@harlan-web ~]# jinfo 76529
Attaching to process ID 76529, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.262-b10
Java System Properties:

java.runtime.name = OpenJDK Runtime Environment
java.vm.version = 25.262-b10
sun.boot.library.path = /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.262.b10-0.el7_8.x86_64/jre/lib/amd64
java.protocol.handler.pkgs = org.apache.catalina.webresources
shared.loader = 
java.vendor.url = http://java.oracle.com/

至此,顯示正常,問題解決。

相關文章
相關標籤/搜索