zoukankan      html  css  js  c++  java
  • HSDB

      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 的工作原理。

    作 者:创心coder
    QQ群:361982568
    订阅号:cxcoder
    文章不足之处,还请谅解!本文会不断完善更新,转载请保留出处。如果帮到了您,烦请点赞,以资鼓励。
  • 相关阅读:
    Linux网络协议栈(三)——网络设备(1)
    Linux网络协议栈(三)——网络设备(2)
    Linux网络协议栈(四)——链路层(1)
    Linux网络协议栈(四)——链路层(2)
    监视系统中进程的创建和终止
    APIHOOK
    APIHOOK
    Try running RemoteDll as Administrator
    用注册表创建无法删除的IE快捷方式
    用注册表创建无法删除的IE快捷方式
  • 原文地址:https://www.cnblogs.com/cwane/p/6129436.html
Copyright © 2011-2022 走看看