主页 > mac电脑教程 >

014-通过JDB调试,通过HSDB查看HotSpot VM运行时数据

Java 虚拟机工具接口 (JVMTI)

JVMTI(Java 虚拟机工具接口)指的是 Java 虚拟机工具接口。它是一组由虚拟机直接提供的原生接口。它位于整个 JPDA 系统的底部。所有调试功能本质上都需要通过 JVMTI 来提供。通过这些接口,开发者不仅可以调试运行在虚拟机上的Java程序,还可以查看其运行状态、设置回调函数、控制某些环境变量来优化程序性能。众所周知,JVMTI的前身是JVMDI和JVMPI,它们最初是用来提供调试Java程序和Java程序调整性能的功能。 J2SE5.0之后,JDK替换了JVMDI和JVMPI这两组接口。 JVMDI 在最新的 Java SE 6 中不再提供支持,并且也计划在 Java SE 7 之后完全取代 JVMPI。

Java 调试交互协议 (JDWP)

014-通过JDB调试,通过HSDB查看HotSpot VM运行时数据

另外需要说明的是,JDWP本身并不包含传输层的实现,传输层需要独立实现,但是JDWP包含了与传输层交互的严格定义,即虽然JDWP协议不要求我们通过EMS仍然是快递货物,但它规定了我们运送货物的方式。在Sun提供的JDK中,在传输层,提供了windows上的socket方法和共享内存方法。当然,传输层本身无非就是机器内部的进程间通信方式和远程通信方式,有兴趣的用户也可以按照JDWP标准自行实现。

014-通过JDB调试,通过HSDB查看HotSpot VM运行时数据

JDI(Java Debug Interface)是三个模块中最高级的接口。在大多数 JDK 中,它是由 Java 语言实现的。 JDI 由为前端定义的接口组成。通过它,调试工具开发者可以通过前端虚拟机上的调试器远程控制被调试程序在后端虚拟机上的运行。 JDI不仅可以帮助开发者格式化JDWP数据,还可以为JDWP数据传输提供队列、缓存等优化服务。理论上,开发者只需使用JDWP和JVMTI即可支持跨平台远程调试,但直接编写JDWP程序费时费力,效率低下。因此,基于Java的JDI层的引入简化了操作,提高了开发者开发调试程序的效率。

1.1.2、三个模块的区别

014-通过JDB调试,通过HSDB查看HotSpot VM运行时数据