JPDA 架构研究2 - JVMTI代理
引入: 我们先从JVMTI讲起。JVMTI的主要作用是提供一组接口来检测VM的状态和控制VM中运行的JAVA程序。JVMTI是个双向接口: JVMTI的客户端叫Agent,它会在VM发生变化时通过事件机制被通知到变化。 JVMTI的服务端是许多函数,它们会和VM实际打交道并把结果告知Agent. 实践: 我们这里先来看下Agent. Agent的方法定义在哪里呢?它们定义在$JAVA_HOME/include/jvmti.h文件中。 1 2 3 4 5 JNIEXPORTjintJNICALL Agent_OnLoad(JavaVM*vm, char *options, void *reserved); JNIEXPORT void JNICAL。 Agent_OnUnload(JavaVM*vm); Agent_OnLoad方法: 当代理被VM加载时,会由VM调用Agent_Onload方法。此时VM有如下能力: (1)VM的System Property已经被设置完毕。 (2)VM的Capabilities已经被设置完毕。 (3)任何字节码都没被执行。 (4)任何类都没有被加载。...






































