ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

HotSpot(七)——HSDB查看内存布局

2021-08-06 13:57:38  阅读:194  来源: 互联网

标签:core jhsdb exe -- HSDB pid HotSpot 内存 Class


HSDB


Hotspot DebuggerJDK自带的工具,用于查看 JVM运行时的状态。每个版本 JDK都带有 HSDB功能,在 JDK9以前没有 .exe程序,需要命令打开 HSDB。之后版本就出现 JHSDB.exe,它在 bin目录下。本文是在 JDK16环境中。每个版本 JDKHSDB功能有细微差异,也有不少的 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对象内存布局

  1. hsdb> universe
  2. scanoops
  3. inspector
    在这里插入图片描述

Class对象

查看Class对象OopHandle中句柄对象的地址0x000002007ccb1088放到Memory Viewer中查看,获取它之后的地址就是Class对象的。把对应地址放到Inspector查看Class对象的内存布局。静态变量也在其上。
在这里插入图片描述

标签:core,jhsdb,exe,--,HSDB,pid,HotSpot,内存,Class
来源: https://blog.csdn.net/success112/article/details/119353561

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有