HotSpot(七)——HSDB查看内存布局
2021/8/7 7:09:37
本文主要是介绍HotSpot(七)——HSDB查看内存布局,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
HSDB
- JHSDB
- JHSDB使用
- Demo
- 查看进程号
- 查看Class类内存布局
- 查看OOP对象内存布局
- Class对象
Hotspot Debugger
是
JDK
自带的工具,用于查看
JVM
运行时的状态。每个版本
JDK
都带有
HSDB
功能,在
JDK9
以前没有
.exe
程序,需要命令打开
HSDB
。之后版本就出现
JHSDB.exe
,它在
bin
目录下。本文是在
JDK16
环境中。每个版本
JDK
的
HSDB
功能有细微差异,也有不少的
bug
。我用的
jdk1.8
最新版本,用
scanoops
直接返回空白。用
jdk16
,没有了
mem
命令很不方便。
JHSDB
它是对各种基础功能的整合。
jhsdb clhsdb [--pid pid | --exe executable --core coredump] jhsdb debugd [options] pid [server-id]|[option] executable core [server-id] jhsdb hsdb [--pid pid | --exe executable --core coredump] jhsdb jstack [--pid pid | --exe executable --core coredump] [options] jhsdb jmap [--pid pid | --exe executable --core coredump] [options] jhsdb jinfo [--pid pid | --exe executable --core coredump] [options] jhsdb jsnap [options] [--pid pid | --exe executable --core coredump]
JHSDB使用
Demo
public class DemoApplication { public String as; public Student st; private static int num = 18; public final String str = "Hello test"; public static void main(String[] args) { DemoApplication ts = new DemoApplication(); System.out.println(); } }
查看进程号
在打印处断点,debug
运行main()
方法。控制台Terminal
输入命令jps -l
查看Class类内存布局
终端输入jhsdb hsdb --pid 24812
,成功连接上HSDB
,点击Tools
打开Class Browser
搜索框搜索类名,出现符合了类信息。
把对应的内存地址拿到Inspector
中检索出InstanceKlass
内存布局,注意OopHandle
它持有正真_java_mirror
的访问句柄。垃圾回收时对象可能被移动(对象地址发生改变),通过Handle访问对象可以对使用者屏蔽垃圾回收细节。
InstanceKlass
的关于Filed
的一些属性。
查看OOP对象内存布局
hsdb> universe
scanoops
inspector
Class对象
查看Class对象
将OopHandle
中句柄对象的地址0x000002007ccb1088
放到Memory Viewer
中查看,获取它之后的地址就是Class对象的。把对应地址放到Inspector
查看Class对象的内存布局。静态变量也在其上。
这篇关于HotSpot(七)——HSDB查看内存布局的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-19《2023版Java工程师》课程升级公告
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现
- 2024-06-03为什么以及如何要进行架构设计权衡?
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)
- 2024-05-31全网首发!软考2024年5月《软件设计师》真题+解析+答案!(21-30题)
- 2024-05-30【Java】百万数据excel导出功能如何实现