Java / JVMTI:在 Agent_OnLoad(JavaVM, char*, void) 中使用 JavaVM 参数
Java / JVMTI: Usage of JavaVM-parameter in Agent_OnLoad(JavaVM, char*, void)
我目前是第一次使用 JVMTI。
如果出现任何问题,我主要使用 JVM(TM) Tool Interface Documentation。
但我无法找到的是:除了通过调用 GetEnv(...) 获取环境 之外,JavaVM 参数可以用来什么?这是唯一的目的吗?
我无法找到关于 JavaVM class 本身或特别是关于此参数的任何进一步文档。可能我只是瞎了眼,有人可以为我指明正确的方向(解释、文档、教程等)。
这里有一些典型的参数使用示例代码:
JNIEXPORT jint JNICALL Agent_OnLoad(JavaVM *vm, char *options, void *reserved) {
jvmtiEnv *jvmti;
jvmtiError error;
jint res;
jvmtiCapabilities capabilities;
jvmtiEventCallbacks callbacks;
res = (*vm)->GetEnv(vm, (void **)&jvmti, JVMTI_VERSION_1);
// Here the code goes on
}
JavaVM
结构是 Java Invocation API.
的一部分
它包含以下功能:
- GetEnv
- 销毁 JavaVM
- 附加当前线程
- AttachCurrentThreadAsDaemon
- 分离当前线程
我目前是第一次使用 JVMTI。
如果出现任何问题,我主要使用 JVM(TM) Tool Interface Documentation。
但我无法找到的是:除了通过调用 GetEnv(...) 获取环境 之外,JavaVM 参数可以用来什么?这是唯一的目的吗?
我无法找到关于 JavaVM class 本身或特别是关于此参数的任何进一步文档。可能我只是瞎了眼,有人可以为我指明正确的方向(解释、文档、教程等)。
这里有一些典型的参数使用示例代码:
JNIEXPORT jint JNICALL Agent_OnLoad(JavaVM *vm, char *options, void *reserved) {
jvmtiEnv *jvmti;
jvmtiError error;
jint res;
jvmtiCapabilities capabilities;
jvmtiEventCallbacks callbacks;
res = (*vm)->GetEnv(vm, (void **)&jvmti, JVMTI_VERSION_1);
// Here the code goes on
}
JavaVM
结构是 Java Invocation API.
它包含以下功能:
- GetEnv
- 销毁 JavaVM
- 附加当前线程
- AttachCurrentThreadAsDaemon
- 分离当前线程