首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Java HotSpot Debugger

Java HotSpot Debugger

作者头像
码农戏码
发布2026-06-25 19:59:47
发布2026-06-25 19:59:47
50
举报
代码语言:javascript
复制
jmap -heap 1
Cannot connect to core dump or remote debug server. Use jhsdb jmap instead

jhsdb(Java HotSpot Debugger)是在JDK 9中引入的命令行实用程序,它是服务性代理(Serviceability Agent)工具的一部分。服务性代理是一个框架,允许对运行中的Java虚拟机(JVM)或崩溃后的核心转储进行深入分析。

引入jhsdb的目的有几个:

统一的调试工具: 在JDK 9之前,开发者需要使用不同的工具,如jmap、jstack、jinfo等来执行各种调试任务。jhsdb将这些工具统一到一个命令行界面下,使得在不切换多个工具的情况下更容易执行广泛的调试和诊断任务。

增强的事后诊断: jhsdb提供了分析核心转储和实时进程的能力,这对事后诊断至关重要。当JVM崩溃时,开发者需要了解崩溃时JVM的状态,这一点尤其有用。

高级分析能力: 使用jhsdb,开发者可以执行高级分析,如检查堆、分析内存使用情况和获取线程堆栈跟踪。它还允许使用内置的命令行调试器(CLD)来调试Java进程,这是一个类似于gdb的基于文本的界面。

跨平台一致性: jhsdb旨在在不同平台上保持一致的工作,为在各种操作系统上进行诊断提供了标准化的方法。

与HotSpot JVM集成: 由于jhsdb是为HotSpot JVM量身定制的,它可以利用HotSpot的内部特性来提供有关JVM内部的详细信息,这对于性能调优和解决复杂问题非常宝贵。

可访问性: 通过包含在JDK中,jhsdb可以立即供所有Java开发者使用,无需额外下载或安装。

可脚本化: 作为命令行工具,jhsdb可以轻松地编写脚本并集成到自动化的调试和诊断工作流中,这对于持续集成和部署管道非常有益。

总的来说,JDK 9中引入jhsdb的目的是通过提供一个强大而多功能的JVM诊断和调试工具来改善开发者体验,从而增强分析和解决Java应用程序中复杂问题的能力。

jhsdb jmap --heap --pid 1

代码语言:javascript
复制
Heap Configuration:
   MinHeapFreeRatio         = 40                                 空闲堆空间的最小百分比
   MaxHeapFreeRatio         = 70                                 空闲堆空间的最大百分比
   NewSize                  = 1363144 (1.2999954223632812MB)     新生代默认值
   OldSize                  = 5452592 (5.1999969482421875MB)     老年代默认值
   MetaspaceSize            = 22020096 (21.0MB)                  元空间的默认值
   MaxHeapSize              = 4078960640 (3890.0MB)              堆空间最大值
   MaxNewSize               = 2447376384 (2334.0MB)              新生代最大值
   NewRatio                 = 2                                  新生代:老年代 = 1:2
   SurvivorRatio            = 8                                  S0:S1:Eden = 1:1:8
   MaxMetaspaceSize         = 17592186044415 MB                  元空间的最大值
   CompressedClassSpaceSize = 1073741824 (1024.0MB)              压缩类空间的大小        
   G1HeapRegionSize         = 2097152 (2.0MB)                    G1垃圾收集器的区域大小

Heap Usage:
G1 Heap:
   regions  = 1945                                              Eden区由1945个区域组成
   capacity = 4078960640 (3890.0MB)                             总容量
   used     = 53015472 (50.55949401855469MB)                    已使用
   free     = 4025945168 (3839.4405059814453MB)                 空闲的
   1.2997299233561617% used                                     使用率
G1 Young Generation:
Eden Space:
   regions  = 19
   capacity = 159383552 (152.0MB)
   used     = 39845888 (38.0MB)
   free     = 119537664 (114.0MB)
   25.0% used
Survivor Space:
   regions  = 0
   capacity = 2097152 (2.0MB)
   used     = 180144 (0.1717987060546875MB)
   free     = 1917008 (1.8282012939453125MB)
   8.589935302734375% used
G1 Old Generation:
   regions  = 7
   capacity = 94371840 (90.0MB)
   used     = 12989440 (12.3876953125MB)
   free     = 81382400 (77.6123046875MB)
   13.764105902777779% used

主要原因

1. JDK 版本兼容性

传统 jmap:在 JDK 9 及以后版本中,传统的 jmap 工具已被标记为废弃jhsdb jmap:是新的推荐工具,随 JDK 9+ 提供

2. 架构统一

jhsdb (Java HotSpot Debugger) 是一个统一的调试器架构•它整合了多个独立的调试工具,提供一致的使用体验•jmap 只是 jhsdb 的一个子命令

使用方法对比

传统方式 (已废弃)

代码语言:javascript
复制
# JDK 8 及以前
jmap -heap <pid>
jmap -histo <pid>
jmap -dump:live,format=b,file=heap.bin <pid>

新的推荐方式

代码语言:javascript
复制
# JDK 9 及以后
jhsdb jmap --heap --pid <pid>
jhsdb jmap --histo --pid <pid>
jhsdb jmap --binaryheap --dump --pid <pid>

具体命令转换示例

代码语言:javascript
复制
jhsdb jmap 等价命令

其他 jhsdb 功能

jhsdb 还提供其他有用的调试命令:

代码语言:javascript
复制
# 启动交互式调试会话
jhsdb clhsdb --pid <pid>

# 使用 jstack 功能
jhsdb jstack --locks --pid <pid>

# 使用 jinfo 功能
jhsdb jinfo --flags --pid <pid>

总结

使用 jhsdb jmap 而不是传统 jmap 的主要原因:

•符合 JDK 9+ 的发展方向•工具架构更现代化和统一•传统 jmap 在未来版本中可能被完全移除•提供更好的错误处理和诊断信息

如果你在较新的 JDK 版本中看到这个提示,强烈建议切换到 jhsdb jmap 来确保工具的长期可用性。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-11-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 码农戏码 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 主要原因
    • 1. JDK 版本兼容性
    • 2. 架构统一
  • 使用方法对比
    • 传统方式 (已废弃)
    • 新的推荐方式
  • 具体命令转换示例
  • 其他 jhsdb 功能
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档