置顶

JDB渗透工具_java渗透工具

作者:hacker | 分类:密码破解 | 浏览:89 | 日期:2022年07月14日

文章目录:

如何查看 HotSpot VM 的运行时数据

首页

所有文章

资讯

Web

架构

基础技术

书籍

教程

Java小组

工具资源

如何查看HotSpot VM的运行时数据

2016/09/27 | 分类: 基础技术 | 0 条评论 | 标签: HSDB, JVM

分享到:11

原文出处: 占小狼

本文将借助HSDB工具分析HotSpot VM的运行时数据,运行的java环境为jdk1.8。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

class Test {

static String version = "1.0";

String name;

int id;

Test(String name, int id) {

this.name = name;

this.id = id;

}

static void fn() {}

void fn2(){}

}

public class Main {

static Test t1 = new Test("java", 1);

private Test t2 = new Test("java", 2);

public void fn() {

Test t3 = new Test("java", 3);

}

public static void main(String[] args) {

new Main().fn();

}

}

运行上述代码,会在Java堆中生成3个Test对象,变量t1,t2,t3分别存储在方法区、实例字段和局部变量表中,那么Test对象的内存是如何布局的呢?

在查看运行时数据之前,需要让程序刚好执行完new Main().fn();并暂停,平时可能习惯了在Eclipse、IntelliJ IDEA、NetBeans等Java IDE里使用Java层调试器,但为了减少对外部工具的依赖,本文将使用Oracle JDK自带的jdb工具来完成此任务。

jdb使用步骤如下:

1、jdb -XX:+UseSerialGC -Xmx10m命令启动jdb;

2、stop in Main.fn命令指定在方法入口设置断点;

3、run Main命令指令主类,启动java程序;

4、next命令可以向前执行一步;

采用jps命令查看目前调试java程序的PID

采用命令java -cp sa-jdi.jar sun.jvm.hotspot.HSDB启动HSDB工具,并连接到目标进程上,注意:Windows上Oracle JDK7才可以用HSDB。

连接上之后

默认窗口是Java Threads,显示当前进程的线程列表,双击线程打开一个Oop Inspector窗口,显示该线程在HotSpot VM的对象。

在菜单里选择Windows - Console,打开HSDB里的控制台,用命令查看更多信息。

1、命令universe查看GC堆的大小、地址范围和使用情况;

1

2

3

4

5

6

7

hsdb universe

Heap Parameters:

Gen 0: eden [0x00000000ff600000,0x00000000ff6d50a0,0x00000000ff8b0000) space capacity = 2818048, 30.964980014534884 used

from [0x00000000ff8b0000,0x00000000ff8b0000,0x00000000ff900000) space capacity = 327680, 0.0 used

to [0x00000000ff900000,0x00000000ff900000,0x00000000ff950000) space capacity = 327680, 0.0 usedInvocations: 0

Gen 1: old [0x00000000ff950000,0x00000000ff950000,0x0000000100000000) space capacity = 7012352, 0.0 usedInvocations: 0

可以发现HotSpot在1.8的Java堆中,已经去除了Perm gen区,由youyoung gen和old gen组成。

2、命令scanoops查看指定类型的实例对象,接受两个必选参数和一个可选参数:必选参数是要扫描的地址范围,一个是起始地址一个是结束地址;可选参数用于指定要扫描什么类型的实例对象;

hsdb scanoops 0x00000000ff600000 0x0000000100000000 Test

0x00000000ff6caf08 Test

0x00000000ff6caf40 Test

0x00000000ff6caf58 Test

通过执行结果可以看出,Java堆上的确有3个Test实例对象,对象的开始地址分别为0x00000000ff6caf08、0x00000000ff6caf40和0x00000000ff6caf58。

.jdb是什么文件

JDB是基于文本和命令行的调试工具(例如Sun JDB);虽然现在有一些很好的调试工具JDB渗透工具,然而 Java 调试器 (JDB) 提供了一些优点。最重要的是 JDB 可以免费获取并且是平台独立的。其缺点是它只有命令行格式JDB渗透工具,一些开发人员认为这很原始JDB渗透工具,而且难以使用。一些 IDE 已经将 GUI 界面构建到 JDB 调试 API(如 Jikes)。JDB 是 JDK 安装的一部分。它在 Java 2 平台中得到了增强。有关详细信息,请参考关于 Java 调试 API 的章节

JDB啥意思

JDB是基于文本和命令行的调试工具(例如Sun JDB);虽然现在有一些很好的调试工具,然而 Java 调试器 (JDB) 提供了一些优点。最重要的是 JDB 可以免费获取并且是平台独立的。其缺点是它只有命令行格式,一些开发人员认为这很原始,而且难以使用。一些 IDE 已经将 GUI 界面构建到 JDB 调试 API(如 Jikes)。JDB 是 JDK 安装的一部分。它在 Java 2 平台中得到了增强。

JDB是什么意思

JDB:就是无油滑动轴承、石墨铜套JDB渗透工具的简称。是在高力黄铜的基体上JDB渗透工具,镶嵌石墨或MoS2固体润滑剂的一高性能固体润滑产品。它突破了一般轴承依靠油膜润滑的局限性。在使用过程中JDB渗透工具,通过摩擦热使固体润滑剂与轴摩擦,形成油、粉末并存润滑的优异条件,既保护轴不磨损,又使固体润滑特性永恒。它的硬度比一般铜套高一倍,耐磨性能也高一倍。目前已广泛运用于冶金连铸机,列车支架、轧钢设备、起重机械、模具导套、矿山机械、船舶、轮机等高温、高载、低速重载等场合使用。

JDB是基于文本和命令行的调试工具(例如Sun JDB);虽然现在有一些很好的调试工具,然而 Java 调试器 (JDB) 提供了一些优点。最重要的是 JDB 可以免费获取并且是平台独立的。其缺点是它只有命令行格式,一些开发人员认为这很原始,而且难以使用。一些 IDE 已经将 GUI 界面构建到 JDB 调试 API(如 Jikes)。JDB 是 JDK 安装的一部分。它在 Java 2 平台中得到了增强。

jdb什么意思?

JDB是基于文本和命令行JDB渗透工具的调试工具(例如Sun JDB)。

虽然有一些很好JDB渗透工具的调试工具,然而 Java 调试器 (JDB) 提供JDB渗透工具了一些优点。最重要的是 JDB 可以免费获取并且是平台独立的。

相关信息:

其缺点是它只有命令行格式,一些开发人员认为这很原始,而且难以使用。一些 IDE 已经将 GUI 界面构建到 JDB 调试 API(如 Jikes)。JDB 是 JDK 安装的一部分。它在 Java 2 平台中得到了增强。

JDB还有很多的调试手段,除了上面那些最常用的,其他很重要的还有clear清除断点,use设置源程序路径,memory显示当前内存使用状况,gc强制进行内存回收,重复上面的命令,thread设置当前线程,quit和exit退出jdb等,还有远程调试等内容,都很有用。

有玩JDB的吗??

j是基于文本和命令行的调试工具;虽然现在有一些很好的调试工具JDB渗透工具,然而 ) 提供JDB渗透工具了一些优点。

最重要的是可以免费获取并且是平台独立的。其缺点是它只有命令行格式,一些开发人员认为这很原始,而且难以使用。一些 已经将平台中得到了增强。

由上往下输入【 y 】

由上往下输入【 x】

由上往下输入【 g 】

由上往下输入【 j 】

由上往下输入【 y】

由上往下输入【 l 】

由上往下输入【 1】

输出表达式的值(与 同) 表达式 - 为字段/变量/数组元素指定新值 - 输出当前堆栈帧中的所有局部变量

发表评论

访客 游客 2022-07-15 · 回复该评论
经将 GUI 界面构建到 JDB 调试 API(如 Jikes)。JDB 是 JDK 安装的一部分。它在 Java 2 平台中得到了增强。jdb什么意思?JDB是基于文本和命令行JDB渗透工具的调试工具(例如Sun JDB)。虽然有一些很好JDB渗透工具的

访客 游客 2022-07-15 · 回复该评论
ew Test("java", 1); private Test t2 = new Test("java", 2); public void fn() {

访客 游客 2022-07-15 · 回复该评论
山机械、船舶、轮机等高温、高载、低速重载等场合使用。JDB是基于文本和命令行的调试工具(例如Sun JDB);虽然现在有一些很好的调试工具,然而 Java 调试器 (JDB) 提供了一些优点。最

访客 游客 2022-07-15 · 回复该评论
载、低速重载等场合使用。JDB是基于文本和命令行的调试工具(例如Sun JDB);虽然现在有一些很好的调试工具,然而 Java 调试器 (JDB) 提供了一些优点。最重要的

访客 游客 2022-07-15 · 回复该评论
享到:11原文出处: 占小狼本文将借助HSDB工具分析HotSpot VM的运行时数据,运行的java环境为jdk1.8。12345678910111213141516171819202122232

取消
微信二维码
支付宝二维码