当前位置: 首页 > news >正文

jmap错误:unknown CollectedHeap type : class sun.jvm.hotspot.gc_interface.CollectedHeap

使用jmap -heap命令查看堆的详细信息报错

Caused by: java.lang.RuntimeException: unknown CollectedHeap type : class sun.jvm.hotspot.gc_interface.CollectedHeap

[root@bangbet-java ~]# jmap -heap 27822
Attaching to process ID 27822, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.222-b10

using thread-local object allocation.
Parallel GC with 4 thread(s)

Heap Configuration:
   MinHeapFreeRatio         = 0
   MaxHeapFreeRatio         = 100
   MaxHeapSize              = 1073741824 (1024.0MB)
   NewSize                  = 536870912 (512.0MB)
   MaxNewSize               = 536870912 (512.0MB)
   OldSize                  = 536870912 (512.0MB)
   NewRatio                 = 2
   SurvivorRatio            = 8
   MetaspaceSize            = 21807104 (20.796875MB)
   CompressedClassSpaceSize = 1073741824 (1024.0MB)
   MaxMetaspaceSize         = 17592186044415 MB
   G1HeapRegionSize         = 0 (0.0MB)

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

奇怪,在本地是没问题的,在linux上却出现这种情况

查看了下jdk版本,都是1.8,没啥问题呀

本地是HotSpot

线上是OpenJDK

最终原因

这里-heap参数会调用用到了sun.jvm下的debug包,而默认openJDK的安装中不包含!

解决方式

下载并安装一个java-openjdk-debug插件!而且需要和openjdk小版本也一致!!!

安装debuginfo

去网站http://debuginfo.centos.org/7/x86_64里面找匹配当前的openjdk的版本,小版本号也要匹配上。

然后使用wget命令下载

wget http://debuginfo.centos.org/7/x86_64/java-1.8.0-openjdk-debuginfo-1.8.0.222.b10-0.el7_6.x86_64.rpm

使用rpm命令安装

rpm -ivh java-1.8.0-openjdk-debuginfo-1.8.0.222.b10-0.el7_6.x86_64.rpm

查看是否安装了debuginfo

[root@bangbet-java ~]# rpm -qa|grep debuginfo
java-1.8.0-openjdk-debuginfo-1.8.0.222.b10-0.el7_6.x86_64

再次查询

[root@bangbet-java ~]# jmap -heap 27968
Attaching to process ID 27968, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.222-b10

using thread-local object allocation.
Parallel GC with 4 thread(s)

Heap Configuration:
   MinHeapFreeRatio         = 0
   MaxHeapFreeRatio         = 100
   MaxHeapSize              = 2147483648 (2048.0MB)
   NewSize                  = 1073741824 (1024.0MB)
   MaxNewSize               = 1073741824 (1024.0MB)
   OldSize                  = 1073741824 (1024.0MB)
   NewRatio                 = 2
   SurvivorRatio            = 8
   MetaspaceSize            = 21807104 (20.796875MB)
   CompressedClassSpaceSize = 1073741824 (1024.0MB)
   MaxMetaspaceSize         = 17592186044415 MB
   G1HeapRegionSize         = 0 (0.0MB)

Heap Usage:
PS Young Generation
Eden Space:
   capacity = 1054867456 (1006.0MB)
   used     = 521443544 (497.28731536865234MB)
   free     = 533423912 (508.71268463134766MB)
   49.43213870463741% used
From Space:
   capacity = 8388608 (8.0MB)
   used     = 8377312 (7.989227294921875MB)
   free     = 11296 (0.010772705078125MB)
   99.86534118652344% used
To Space:
   capacity = 9437184 (9.0MB)
   used     = 0 (0.0MB)
   free     = 9437184 (9.0MB)
   0.0% used
PS Old Generation
   capacity = 1073741824 (1024.0MB)
   used     = 334280072 (318.79431915283203MB)
   free     = 739461752 (705.205680847168MB)
   31.132257729768753% used

35880 interned Strings occupying 4018400 bytes.

ok,解决完毕!

遇到的版本问题

我的jdk版本是1.8.0_222-b10,在http://debuginfo.centos.org/7/x86_64找到两个

先下载了个最新的发现并不好使,之后卸载重新下载另一个

rpm卸载

rpm -e --nodeps java-1.8.0-openjdk-debuginfo-1:1.8.0.222.b10-1.el7_7.x86_64

之后重新安装即可

转载于:https://www.cnblogs.com/chywx/p/11563297.html

相关文章:

  • nginx retryfiles
  • gitlab 构建常见错误
  • PS——使用切片工具切出透明图片
  • 从零开始部署CloudSim4.0云计算仿真平台
  • Ubuntu 16.04 64位 安装NVIDIA驱动 CUDA9.1和PyTorch
  • 从零开始部署Guns V4.0 (SpringBoot开源框架)教程
  • 云计算:数据中心之虚拟机
  • codeblocks不支持16位,“64位Windows不兼容”的问题
  • PTA 6-1 在一个数组中实现两个堆栈 (20分)
  • PTA 7-1 哈夫曼编码 (30分)
  • 哈夫曼编码的最优子结构性质
  • PTA jmu-ds-舞伴问题 (20分)
  • 如何学习编程?如何学号C语言?编程学习网站汇总
  • PTA 银行排队问题之单窗口“夹塞”版(30分)
  • PTA 两个有序链表序列的合并
  • JS 中的深拷贝与浅拷贝
  • Android优雅地处理按钮重复点击
  • Centos6.8 使用rpm安装mysql5.7
  • chrome扩展demo1-小时钟
  • ES6 ...操作符
  • iOS编译提示和导航提示
  • JDK9: 集成 Jshell 和 Maven 项目.
  • JS学习笔记——闭包
  • node学习系列之简单文件上传
  • 安卓应用性能调试和优化经验分享
  • 案例分享〡三拾众筹持续交付开发流程支撑创新业务
  • 对话 CTO〡听神策数据 CTO 曹犟描绘数据分析行业的无限可能
  • 关于springcloud Gateway中的限流
  • 马上搞懂 GeoJSON
  • 入门级的git使用指北
  • 三栏布局总结
  • #我与Java虚拟机的故事#连载08:书读百遍其义自见
  • #我与Java虚拟机的故事#连载13:有这本书就够了
  • (2)MFC+openGL单文档框架glFrame
  • (javascript)再说document.body.scrollTop的使用问题
  • (翻译)Entity Framework技巧系列之七 - Tip 26 – 28
  • (九)c52学习之旅-定时器
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理第3章 信息系统治理(一)
  • (四)鸿鹄云架构一服务注册中心
  • (转)C#开发微信门户及应用(1)--开始使用微信接口
  • (转)http协议
  • .NET Framework .NET Core与 .NET 的区别
  • .Net高阶异常处理第二篇~~ dump进阶之MiniDumpWriter
  • .net开源工作流引擎ccflow表单数据返回值Pop分组模式和表格模式对比
  • .Net转Java自学之路—SpringMVC框架篇六(异常处理)
  • /boot 内存空间不够
  • @converter 只能用mysql吗_python-MySQLConverter对象没有mysql-connector属性’...
  • [ MSF使用实例 ] 利用永恒之蓝(MS17-010)漏洞导致windows靶机蓝屏并获取靶机权限
  • [3300万人的聊天室] 作为产品的上游公司该如何?
  • [Android]如何调试Native memory crash issue
  • [codevs 1515]跳 【解题报告】
  • [CSS]CSS 字体属性
  • [dfs搜索寻找矩阵中最长递减序列]魔法森林的秘密路径
  • [ESP32] 编码旋钮驱动
  • [Java][算法 双指针]Day 02---LeetCode 热题 100---04~07