问题描述

今天在Ubuntu服务器上执行jmap -heap pid的时候,Heap Usage部分报错:

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:144)
	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:49)
	... 6 more

服务器描述:

  • 操作系统版本:Ubuntu 9.4.0-1ubuntu1~20.04.1
  • JDK版本:1.8.0_382

解决方案

简单来说就是OpenJDK没有帮助调试的包(sun.jvm.hotspot.gc_interface.CollectedHeap),安装补充包即可。

网上有很多解决方案都是针对于Centos系统的,对于Ubuntu系统且JDK是1.8版本的,只需要执行下列命令即可:

sudo apt install openjdk-8-dbg

如果JDK是其他版本的话,可以在Ubuntu packages中搜索相应的包,然后再去安装

https://packages.ubuntu.com/search?keywords=openjdk+dbg&searchon=all&suite=kinetic&section=all

【Ubuntu】jmap命令报错unknown CollectedHeap type : class sun.jvm.hotspot.gc_interface.CollectedHeap_jvm

参考链接

https://stackoverflow.com/questions/61620693/how-to-execute-openjdk-debugging-package


阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: Ubuntu