是java9引入的,可以在JAVA_HOME/bin目录下找到jhsdb;它取代了jdk9之前的JAVA_HOME/lib/sa-jdi.jar jhsdb有clhsdb、debugd、hsdb、jstack...Use jhsdb jmap instead jdk9及以上版本使用jmap -heap pid命令查看当前heap使用情况时,发现报错,提示需要使用jhsdb jmap来替代 jhsdb jmap pid.../bin目录下就有了jhsdb PTRACE_ATTACH failed / # jhsdb jmap 1 You have to set --pid or --exe....这个命令其实跟jinfo -sysprops 1是等价的 jhsdb jsnap / # jhsdb jsnap --pid 1 Attaching to process ID 1, please wait...才可以 doc JVM信息查看 jhsdb jdk.hotspot.agent jhsdb jhsdb: A New Tool for JDK 9 jcmd: One JDK Command-Line
JHSDB是什么?解决什么问题? JHSDB是一款基于服务性代理(Serviceability Agent,SA)实现的进程外调试工具。...ParallelScavengeHeap parallel垃圾回收器 PSYoungGen 新生代 eden 伊甸园 from from区 to to区 PSOldGen 老年代 最后 JHSDB
栈帧优化」 先介绍一个工具JHSDB,JHSDB是一款基于服务性代理(Serviceability Agent,SA)实现的进程外调试工具。...通过JHSDB可以更好的理解栈帧优化。...栈帧优化 堆区再理解 下面通过JHSDB工具来再理解一下堆区的内存布局。...-XX:-UseCompressedOops 禁止指针压缩,JHSDB对指针压缩存在缺陷,建议关闭指针压缩 -Xmx10m是设置堆的最大内存为10M,在这里是为了JHSDB加快在内存中搜索对象的速度 然后在通过...总结 本文通过JHSDB工具和字节码层面来更深入的了解JVM运行时数据区,对于JHSDB工具和字节码也只是一个简单的使用和说明,感兴趣的可以再深入了解一下。
Use jhsdb jmap instead 看错误提示说让替换Jamp为jhsdb jmap,百度其用法 jhsdb jmap --heap --pid 进程号 详细jhsdb相关信息查看文档:https...权限问题解决办法,执行如下命令: jhsdb jmap --heap --pid 2139 jdk版本问题,我们上面都设置了使用jdk11, idea也是jdk11.
但是对于其他常用heap dump工具如jmap、jhsdb 等都没有增加相应支持,并且我们也没有观察到社区在这方面的计划。...因此,作为社区的一员,同时为了解决我们运维人员以及云业务用户在使用上的痛点,我们对jmap、jhsdb等工具添加了compressed heap dump的支持。...目前针对jmap的patch已经合入社区,针对jhsdb的patch由于需要变动heapdump的实现,社区还在review中,我们会持续跟进。
深入理解Java虚拟机》第三版 代码清单4-6} * VM Args:-Xmx10m -XX:+UseSerialGC -XX:+UseCompressedOops */ public class Jhsdb...static class ObjectHolder{}; public static void main(String[] args) { Test test = new Jhsdb.Test...(); test.foo(); } } 实例操作步骤: jps查询到当前程序的进程ID jhsdb hsdb --pid vmid;进入JHSDB图形化模式 scanoops 0x00007f32c7800000...0x00007f32c7b500000 Jhsdb$ObjectHolder;在新生代范围查找ObjectHolder实例 revptrs 0x00007f32c7a7c458;查找引用实例的位置 JConsole
Get arcesb service heap usage raw result if [ "$java_major_version" = "11" ]; then heap_res=$(sudo jhsdb...jmap --heap --pid $arcesb_pid) _log_msg "sudo jhsdb jmap --heap --pid $arcesb_pid:" _log_msg "$heap_res
((I) demo).infMethod(); Thread.sleep(Integer.MAX_VALUE); } } 为了更加明显的看到这个过程,下面介绍一下 jhsdb...这个工具,这是在 Java9 之后 JDK 先加入的调试工具,我们可以在命令行使用 jhsdb hsdb 来启动它。...END 本文从Java字节码的顶层结构介绍开始,通过一个实际代码,了解了类加载以后,在JVM内存里的表现形式,并了解了jhsdb对Java进程的观测方式。
除了JOL外,还可以使用JDK自带的jhsdb工具获取。使用jhsdb hsdb命令打开HotSpot Debugger程序,可以查看oop的内部数据,如图3-2所示。...图3-2 使用jhsdb hsdb命令查看oop的内部数据 oop最开始的两个字段是_mark和_metadata,它们包含一些对象的元数据,接着是包含对象字段的数据。...图3-5 使用jhsdb hsdb命令可视化查看klass InstanceKlass在虚拟机层描述大部分的Java类,但有少部分Java类有特殊语意:普通类的对象在垃圾回收过程中只需要遍历所有实例字段
id 查看堆信息, 这个命令会让JVM 是暂停服务的,所以对线上的运行会产生影响,不推荐该方式JDK9 及以上版本使用jmap -heap pid命令查看当前heap使用情况时,发现报错,提示需要使用jhsdb...jmap来替代,我本地是JDK11图片jhsdb jmap --pid 进程id --heap [mac@localhost lixiang ~]# jhsdb jmap --pid 3110235
HSDB是调试虚拟机极其有用的一款内置工具,自JDK9及以后,启动方式稍有些变化,首先确定自己的jdk版本,我现在的是11.0.2,如下: 启动方式是:jhsdb hsdb 输入jvm 进程号点OK 就可以看到
Use jhsdb jmap instead 是因为jdk8之后的版本之前的jmap -heap xxx(pid)命令不可再使用。...可以改用命令jhsdb jmap --heap --pid xxx. 在提示信息输出1,2,3后分别进行三次操作得到的结果如下。
JVM 参数:HeapBaseMinAddress,ObjectAlignmentInBytes,MinHeapSize,MaxHeapSize,InitialHeapSize) 使用 jol + jhsdb...使用 jol + jhsdb + JVM 日志查看压缩对象指针与 Java 堆验证我们前面的结论 引入 jol 依赖: org.openjdk.jol...我们使用 jhsdb 看一下进程的具体虚拟内存的内容验证下 首先打开 jhsdb gui 模式:jhsdb hsdb 之后 “File” -> “Attach to Hotspot Process”,...我们使用 jhsdb 看一下进程的具体虚拟内存的内容验证下目前的压缩对象指针的内容,前面的步骤与上一个例子一样,我们直接看最后的: 如上图所示,tt 保存的对象,从 0x0000 0007 9df7...我们使用 jhsdb 看一下进程的具体虚拟内存的内容验证下目前的压缩对象指针的内容,前面的步骤与上一个例子一样,我们直接看最后的: 如上图所示,tt 保存的对象,从 0x000000102045ab90
((I) demo).infMethod(); Thread.sleep(Integer.MAX_VAL) } } 为了更加明显的看到这个过程,下面介绍一个jhsdb...工具,这是在 Java 9 之后 JDK 先加入的调试工具,我们可以在命令行中使用jhsdb hsdb来启动它。...总结 从 Java 字节码的顶层结构介绍开始,通过一个实际代码,了解了类加载以后,在 JVM内存里的表现形式,并学习了 jhsdb 对 Java 进程的观测方式。
使用HSDB可以看到堆栈里面相关的内容, 启动HSDB 无论哪种方式启动,都需要先知道当前java程序的进程号,我们使用jps命令,如下图所示: 然后我们使用命令 jhsdb hsdb --pid=87854
opt/jdk-22/bin/ [root@test19-server08 bin]# ls jar java javadoc jcmd jdb jdeps jhsdb
这类工具主要包括JConsole、 JHSDB、VisualVM和JMC四个。...6.2.1、JHSDB:基于服务性代理的调试工具 JDK中提供了JCMD和JHSDB两个集成式的多功能工具箱,它们不仅整合了所有 基础工具所能提供的专项功能,而且由于有着“后发优势”,能够做得往往比之前的老工具们更好...JHSDB是一款基于服务性代理(Serviceability Agent,SA)实现的进程外调试工具。...使用以下命令进入JHSDB的图形化模式,并使其附加进程11180: jhsdb hsdb --pid 11180 命令打开的JHSDB的界面: ?
jmap命令在Java9之后,使用jhsdb命令替代,它们在用法上,区别不大。注意,这些命令本身会占用操作系统的资源,在某些情况下会造成服务响应缓慢,所以不要频繁执行。...jmap -dump:format=b,file=heap.bin 37340 jhsdb jmap --binaryheap --pid 37340 1、工具介绍 专业的事情要有专业的工具来做,
这类工具主要包括JConsole、 JHSDB、VisualVM和JMC四个。...6.2.1、JHSDB:基于服务性代理的调试工具 JDK中提供了JCMD和JHSDB两个集成式的多功能工具箱,它们不仅整合了所有 基础工具所能提供的专项功能,而且由于有着“后发优势”,能够做得往往比之前的老工具们更好...JHSDB是一款基于服务性代理(Serviceability Agent,SA)实现的进程外调试工具。...使用以下命令进入JHSDB的图形化模式,并使其附加进程11180: jhsdb hsdb --pid 11180 命令打开的JHSDB的界面: [4ecsu4mnt9.png?
领取专属 10元无门槛券
手把手带您无忧上云