初次尝试java虚拟机调试-启动HSDB

本人最近正在学习java虚拟机,而HSDB是学习java虚拟机的必经之路,于是今天尝试下了HSDB的调试。

首先借鉴了知乎大牛R大的文章:   借HSDB来探索HotSpot VM的运行时数据,而本文章的意义在于帮助和我一样想学习java虚拟机但平时过于依赖ide的同学。我的环境是JDK8。废话不多说了,直接上图。

1.创建并编译代码

由于平时使用eclipse,如果没有配好path、javahome和classpath要首先配好,然后cmd进入工程目录下,我的package是hsdb,需要进入到hsdb的上级目录下,执行编译:

2.jdb调试代码并暂停

ps:jdb,jps和sa-jdi.jar都在jdk lib和bin目录下

3.使用jps查看java程序pid

上图的cmd窗口保留不动,重新打开一个新的cmd窗口,使用jps查看java程序的进程号并执行后续的HSDB启动操作

图中我们可以看到Main的pid是18392.

4.启动HSDB

注意:我们大多的java装在了C:\Program Files下路 这个完整classpath路径需要用双引号转义一下,如下图:

执行完这个命令之后我们的HSDB工具就应该启动了。但是我启动的时候报了一个错误:Exception in thread "Thread-1" java.lang.UnsatisfiedLinkError: Can‘t load library: D:\Program Files\Java\XXX\sawindbg.dll.参照如下文章进行了解决 HSDB时,关于解决UnsatisfiedLinkError sawindbg.dll的问题笔记

然后我们就可以用pid号链接到进程

至此,我们HSDB工具已经连接到我们的java进程中,可以进行进一步的调试了。本文章意在帮助第一次使用HSDB调试的同学爬坑,并给自己做个笔记。

时间: 2024-10-13 06:06:05

初次尝试java虚拟机调试-启动HSDB的相关文章

java虚拟机jvm启动后java代码层面发生了什么?

java虚拟机jvm启动后java代码层面发生了什么? 0000 我想验证的事情 java代码在被编译后可以被jdk提供的java命令进行加载和运行, 在我们的程序被运行起来的时候,都发生了什么事情, 下面就来探究下这个问题, 这个问题被拆成了两个问题, 第一个问题用来确定发生了哪些事情, 第二个问题用来确定这些事情是如何进行的. java进程里面都发生了哪些活动? 这些活动在java代码(反编译或者是源码)级别有所体现吗? 0001 寻找验证的方式 当我在探究上面两个问题时, 我想了很多方式去

Java虚拟机的启动与程序的运行

这篇文章是从 OpenJDK 源代码的角度讲当我们运行了 java -classpath . hello 之后,java.exe 如何从 main 函数开始执行,启动虚拟机,并执行字节码中的代码. 实验环境 要了解一个系统是如何运行的,光看是不行的,要实际地运行,调试,修改才能对系统的动作方式有所了解. 起初我是按照 GitHub 上的一个项目 OpenJDK-Research 在 windows 7 64位平台上,使用 Visual Studio 2010 来调试,运行的.但是后来发现,这个项

Java虚拟机的启动与程序的执行

这篇文章是从 OpenJDK 源码的角度讲当我们执行了 java -classpath . hello 之后,java.exe 怎样从 main 函数開始运行,启动虚拟机,并运行字节码中的代码. 实验环境 要了解一个系统是怎样执行的,光看是不行的,要实际地执行,调试,改动才干对系统的动作方式有所了解. 起初我是依照 GitHub 上的一个项目 OpenJDK-Research 在 windows 7 64位平台上,使用 Visual Studio 2010 来调试,执行的.可是后来发现,这个项目

Java虚拟机 - 结构原理与运行时数据区域

http://liuwangshu.cn/java/jvm/1-runtime-data-area.html 前言 本来计划要写Android内存优化的,觉得有必要在此之前介绍一下Java虚拟机的相关知识,Java虚拟机也并不是三言两语能够介绍完的,因此开了Java虚拟机系列,这一篇文章我们来学习Java虚拟机的结构原理与运行时数据区域. 1.Java虚拟机概述 Oracle官方定义的Java技术体系主要包括以下几个部分: Java程序设计语言 各种平台的Java虚拟机 Class文件格式 Ja

Java虚拟机(一)结构原理与运行时数据区域

前言 本来计划要写Android内存优化的,觉得有必要在此之前介绍一下Java虚拟机的相关知识,Java虚拟机也并不是三言两语能够介绍完的,因此开了Java虚拟机系列,这一篇文章我们来学习Java虚拟机的结构原理与运行时数据区域. 1.Java虚拟机概述 Oracle官方定义的Java技术体系主要包括以下几个部分: Java程序设计语言 各种平台的Java虚拟机 Class文件格式 Java API类库 第三方Java类库 可以把Java程序设计语言.Java虚拟机和Java API类库这三部分

java虚拟机底层结构详解[转]

本文来自:曹胜欢博客专栏.转载请注明出处:http://blog.csdn.net/csh624366188 在以前的博客里面,我们介绍了在java领域中大部分的知识点,从最基础的java最基本语法到SSH框架.这里面应该包含了在java领域里面的大部分内容了吧.但是,那些知识点是让我们从一个应用的层面上了解了java,java程序真正底层的运行机制和一些底层虚拟机的工作我们还不了解,虽然这些内容在我们真正的开发中几乎用不到这些底层的东西,但对于我们对java的理解会有比较大的帮助.尤其也对以后

Java虚拟机底层结构详解

Java虚拟机 Java虚拟机(Java Virtual Machine) 简称JVM Java虚拟机是一个想象中的机器,在实际的计算机上通过软件模拟来实现.Java虚拟机有自己想象中的硬件,如处理器.堆栈.寄存器等,还具有相应的指令系统.下面我们就来看一下这几部分比较重要的java虚拟机的结构: 1)JVM寄存器 所有的CPU均包含用于保存系统状态和处理器所需信息的寄存器组.如果虚拟机定义义较多的寄存器,便可以从中得到更多的信息而不必对栈或内存进行访问,这有利于提高运行速度.然而,如果虚拟机中

深入java虚拟机(一)——java虚拟机底层结构详解

在以前的博客里面,我们介绍了在java领域中大部分的知识点,从最基础的java最基本语法到SSH框架.这里面应该包含了在java领域里面的大部分内容了吧.但是,那些知识点是让我们从一个应用的层面上了解了java,java程序真正底层的运行机制和一些底层虚拟机的工作我们还不了解,虽然这些内容在我们真正的开发中几乎用不到这些底层的东西,但对于我们对java的理解会有比较大的帮助.尤其也对以后java开发中的性能优化有很大帮助,可以使我们减少一些没必要的内存浪费等好处.所以,从今天开始,我将和大家一起

java虚拟机启动参数分类详解

官方文档见: http://docs.sun.com/source/819-0084/pt_tuningjava.html java启动参数共分为三类:其一是标准参数(-),所有的JVM实现都必须实现这些参数的功能,而且向后兼容:其二是非标准参数(-X),默认jvm实现这些参数的功能,但是并不保证所有jvm实现都满足,且不保证向后兼容:其三是非Stable参数(-XX),此类参数各个jvm实现会有所不同,将来可能会随时取消,需要慎重使用: 一.标准参数中比较有用的: verbose -verbo