ASP源码.NET源码PHP源码JSP源码JAVA源码DELPHI源码PB源码VC源码VB源码Android源码

Java千百问_08JDK详解(013)_JVMTI是什么(1/3)

来源:网络整理     时间:2016-07-02     关键词:

本篇文章主要介绍了" Java千百问_08JDK详解(013)_JVMTI是什么",主要涉及到方面的内容,对于其他编程jrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播感兴趣的同学可以参考一下: 点击进入_更多_Java千百问1、JVMTI是什么JVMTI(JVM Tool Interface)是JPDA体系中的最底层, 由Java虚拟机提供的nativ...

点击进入_更多_Java千百问

1、JVMTI是什么

JVMTI(JVM Tool Interface)JPDA体系中的最底层, 由Java虚拟机提供的native编程接口,是JVMPI(Java Virtual Machine Profiler Interface)和 JVMDI(Java Virtual Machine Debug Interface)的更新版本。

了解JPDA体系看这里:JPDA是什么
从它的发展中我们就可以知道,JVMTI提供了调试(debug)分析(profiler)功能;同时,它还有监听(Monitoring)线程分析(Thread analysis)以及覆盖率分析(Coverage Analysis)等功能。正是由于JVMTI的强大功能,它是实现Java调试器,以及其它Java运行态测试与分析工具的基础。目前已有很多成熟的集成工具提供了JVMTI的实现(例如Sun、IBM以及一些开源项目如Apache Harmony DRLVM),这些工具虽然强大易用,但是在一些特定情况下,开发者常常会有一些特殊的需求,这个时候就需要定制工具来达成目标。

JVMTI是一套本地代码接口,因此我们需要使用C/C++以及JNI。开发时一般采用建立一个Agent(通过C++编写)的方式来使用JVMTI,它可以使用JVMTI函数设置回调函数从JVM中得到当前的运行态信息,还可以操作虚拟机的运行态

2、如何加载JVMTI agent

当我们把Agent编译成一个动态链接库之后,我们可以通过两种方式加载Agent:启动加载模式活动加载模式。具体如下:

启动加载模式

在Java程序启动时加载它,其实是在java启动时指定加载agent,如下:

-agentlib:<agent-lib-name>=<options>

注意,这里的路径是环境变量的相对路径,例如 java -agentlib:libagent=opt,java启动时会PATH环境变量定义的路径处装载libagent.so

-agentpath:<path-to-agent>=<options>

这里是绝对路径,例如 java -agentpath:/home/admin/agentlib/libagent.so=opt

活动加载模式

相关图片

相关文章