jmap -heap報錯問題解決:unknown CollectedHeap type : class sun.jvm.hotspot.gc_interface.CollectedHeap


問題:

在使用java-1.8.0-openjdk環境查看JVM使用情況的時候,遇到了如下報錯:

Heap Usage:
Exception in thread "main" java.lang.reflect.InvocationTargetException
    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: java.lang.RuntimeException: unknown CollectedHeap type : class sun.jvm.hotspot.gc_interface.CollectedHeap
    at sun.jvm.hotspot.tools.HeapSummary.run(HeapSummary.java:157)
    at sun.jvm.hotspot.tools.Tool.startInternal(Tool.java:260)
    at sun.jvm.hotspot.tools.Tool.start(Tool.java:223)
    at sun.jvm.hotspot.tools.Tool.execute(Tool.java:118)
    at sun.jvm.hotspot.tools.HeapSummary.main(HeapSummary.java:50)
    ... 6 more

 

解決:

經過多方查詢找到了原因:這里-heap參數會調用用到了sun.jvm下的debug包,而默認openJDK的安裝中不包含!

解決方法:

下載並安裝一個java-openjdk-debug插件!而且需要和openjdk小版本也一致!!!

下載地址:http://debuginfo.centos.org/7/x86_64/

查看系統自身的openjdk版本:

這里我因為找不到和小版本一致的安裝包,因此首先就將其卸載了(蛇皮操作)!!

yum -y erase java-1.8.0-openjdk-devel-1.8.0.201.b09-2.el7_6.x86_64
yum -y erase java-1.8.0-openjdk-1.8.0.201.b09-2.el7_6.x86_64

 然后選擇能夠找到findbug的版本安裝:

yum -y install java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64
yum -y install java-1.8.0-openjdk-devel-1.8.0.191.b12-1.el7_6.x86_64

下載並安裝對應版本的findbugs插件:

wget http://debuginfo.centos.org/7/x86_64/java-1.8.0-openjdk-debuginfo-1.8.0.191.b12-1.el7_6.x86_64.rpm
rpm -ivh java-1.8.0-openjdk-debuginfo-1.8.0.191.b12-1.el7_6.x86_64.rpm

 安裝完成后成功解決報錯問題!!!


免責聲明!

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



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