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


JINFO命令輸出給定的java進程的所有配置信息

JPS命令是列出當前所有的java進程

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

查看Bootstrap中的所有配置信息

[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的版本信息。

查看環境中的JDK版本信息

查看當前環境的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.0

 

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

解決方法:

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

重新將當前環境的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/

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM