HSDB - HotSpot debugger
HSDB 是专门用于调试 HotSpot VM 的调试器,它是一个图形化界面。与之对应的还有个 CLHSDB-Command Line HotSpot Debugger,命令行调试界面。下面是启动命令:
java -cp .;%JAVA_HOME%/lib/sa-jdi.jar sun.jvm.hotspot.HSDB # 启动图形界面 java -cp .;%JAVA_HOME%/lib/sa-jdi.jar sun.jvm.hotspot.CLHSDB # 启动命令行界面
1. HSDB 图形界面
启动 HSDB 后,使用 File -> Attach to HotSpot process 连接到目标进程:
连接成功后,默认打开 Java Threads 界面,双击一个线程可查看其 OOP 信息,或者使用工具栏工具,如下:
- Inspector:查看 OOP 和 Klass 对象信息,双击线程名称也能够查看此信息
- Stack Memory:线程栈内存
- Show Java Stack Traces:显示线程堆栈信息
- Show Thread Infomation:显示线程信息
- Find Crashes
(1)Inspector
(2)Stack Memory
栈内存界面有 3 栏信息,从左到右依次是:内存地址,指虚拟地址不是物理地址;该地址数据,以字宽为单位,如下图是在64位的机器的情况,字宽就是64位=8字节;相关注释,竖线表示范围,横线表示说明。
Tools 工具栏也变得可用,主要有以下功能:
- Class Browser:类浏览器
- Code Viewer: 代码查看
- Compute Reverse Ptrs:反向指针计算
- Deadlock Detection: 死锁探测
- Find Object by Query: 使用对象查询语言查询对象
- Find Pointer:查找指针
- Find Value in Heap:在堆中查询
- Find Value in Code Cache:在Code Cache 中查询
- Heap Parameters:堆信息
- Inspector:对象检查器
- Memory Viewer: 内存信息
- Monitor Cache Dump:监控Cache信息
- Object Histogram: 对象直方图
- Show System Properties:显示系统属性
- Show VM Version:显示 VM 版本
- Show –XX flags:显示 VM 选项
使用 Heap Parameters 查看堆信息,能够查看出各代的地址空间:
2. CLHSDB
既可以在 HSDB 中使用 Windows –> Console 进行命令行界面,也可以使用 Java 命令直接连接到 CLHSDB 如图:
CLHSDB 提供了丰富的命令,使用 help 查看帮助信息,以下简单介绍常用的命令:
- attach pid|exec core:连接 Java进程或 core文件
- class name:查看类信息
- classes:查看加载的类
- detach:断开连接
- inspect expression:查看 OOP 信息
- jstack [-v]:线程堆栈
- mem address [length]:查看内存,以字宽为单位
- print expression:输出表达式值
- revptrs:反向指针
- scanoops start end [type]:扫描指定空间中的 type 类型及其子类的实例
- thread {-a|id}:查看指定线程信息
- threads:查看所有线程信息
- universe:查看堆空间信息
- whatis address:查看指定地址存放的数据信息
- quit:退出
通过 HSDB和CLHSDB 可以查看 JVM 内部信息,从本质上去了解 JVM 的工作原理。
HSDB - HotSpot debugger的更多相关文章
- 【JVM】【linux】linux上执行jmap命令查看JVM内存使用情况,报错:sun.jvm.hotspot.debugger.NoSuchSymbolException: Could not find symbol "gHotSpotVMTypes" in any of the known library name
运行命令: jmap -heap 报错如下: Attaching to process ID , please wait... sun.jvm.hotspot.debugger.NoSuchSymbo ...
- JVM-对象及对象内存布局
目录 前言 类与对象 对象类二分模型 对象 对象内存布局 JOL工具 对象头 Mark Word 类型句柄 对象头与锁膨胀 无锁 偏向锁 轻量级锁 重量级锁 重量级锁降级 实例数据 填充 对象生命周期 ...
- 014-通过JDB调试,通过HSDB来查看HotSpot VM的运行时数据
一.JDB调试 在预发环境下进行debug时,时常因为工具和环境的限制,导致debug体验非常差,那么有什么方法能够简化我们进行debug的体验吗?JDB就是一种. JDB ...
- 第一次使用HSDB
今天看了几篇大佬关于HSDB使用的文章,自己也依样画葫芦的用来一下,强大的一匹!!! HSDB(Hotspot Debugger),JDK自带的工具,用于查看JVM运行时的状态. HSDB位于C:\P ...
- HSDB工具类使用探索jvm
本文是引用https://club.perfma.com/article/2261053 有人问了个小问题,说: public class Test { static Test2 t1 = new T ...
- 99%的人都搞错了的java方法区存储内容,通过可视化工具HSDB和代码示例一次就弄明白了
https://zhuanlan.zhihu.com/p/269134063 番茄番茄我是西瓜 那是我日夜思念深深爱着的人啊~ 已关注 6 人赞同了该文章 前言 本篇是java内存区域管理系列教 ...
- 【Java】JDK/JVM相关工具
1.JDK自带工具 1)常见的用法参见:https://cloud.tencent.com/developer/article/1379487 2)HSDB,即Hotspot debugger,位置在 ...
- JVM 第四篇:可视化 JVM 故障处理工具
本文内容过于硬核,建议有 Java 相关经验人士阅读. 1. 可视化工具 在 JDK 中为我们提供了大量的 JVM 故障处理工具,都在 JDK 的 bin 目录下: 这其中除了大量的命令行工具以外,还 ...
- java jvm常用命令工具
[尊重原创文章出自:http://www.chepoo.com/java-jvm-command-tools.html] 一.概述 程序运行中经常会遇到各种问题,定位问题时通常需要综合各种信息,如系统 ...
随机推荐
- 窥探Swift之函数与闭包的应用实例
今天的博客算是比较基础的,还是那句话,基础这东西在什么时候都是最重要的.说到函数,只要是写过程序就肯定知道函数是怎么回事,今天就来讨论一下Swift中的函数的特性以及Swift中的闭包.今天的一些小实 ...
- Linux异常表
一.为什么需要异常表? 处于内核态的程序有下面四种情况会产生缺页异常: 1.内核试图访问属于进程地址空间的页,但是,该页对应的页框不存在或者内核试图去访问一个只读的页,分别对应“请求调页”和“写时复制 ...
- setTimeout与取号机之间的关系
说到setTimeout写过javascript的伙伴们一定不会陌生,去银行办过存取款业务的伙伴一定对取号机不会陌生.今天群里有个好伙伴在问setTimeout的问题,大伙你一言我一语,讲了很多,可是 ...
- 从客户端(&)中检测到有潜在危险的 Request.Path 值
首先,这个问题出现在 ASP.NET MVC 应用程序中,所以下面的解决方式都是在这个环境下. 关于这个问题,网上又很多的答案,当时也搜了一些: A potentially dangerous Req ...
- Google和Baidu常用的搜索技巧--转
原文链接:http://mp.weixin.qq.com/s?__biz=MjM5NTY0MTY1OQ==&mid=2654509772&idx=1&sn=754454e374 ...
- 自制 移动端 纯原生 Slider滑动插件
在Google搜关键字“slider”或“swiper”能找到一大堆相关插件,自己造轮子是为了能更好的理解其中的原理. 给这个插件取名为“veSlider”是指“very easy slider”非常 ...
- ZOJ Problem Set - 1241 Geometry Made Simple
水题不解释 #include <stdio.h> #include <math.h> int main() { ,flag=; double a,b,c; while(scan ...
- Cesium原理篇:4Web Workers剖析
JavaScript是单线程的,又是异步的,而最新的HTML5中,通过Web Workers可以在JS中支持多线程开发.这是几个意思?异步还是单线程,这怎么理解?Web Workers又是什么原理?实 ...
- Elasticsearch 全教程
Elasticsearch 权威指南 在线阅读 国外自动指向 GITBOOK 项目 | 国内用户自动指向 阿里云 GITHUB 仓库 译者前言 译者现在的工作项目中需要用到 Elasticsearch ...
- ASP.NET vNext总结:EntityFramework7
ASP.NET vNext总结:EntityFramework7 源码分享:http://www.jinhusns.com/Products/Download/?type=xcj 1.概述 关于EF7 ...