引入:
上文中我们已经探讨了Agent如何利用环境指针访问VM(对象级的操作),现在我们 讨论让Agent利用环境指针访问类的字段。
分类10:字段访问
a.GetFieldName.获取某类的某字段名字
jvmtiError GetFieldName(jvmtiEnv* env, jclass klass, jfieldID field, char** name_ptr, char** signature_ptr, char** generic_ptr)
b.GetFieldDeclaringClass. 获取声明该字段的类
jvmtiError GetFieldDeclaringClass(jvmtiEnv* env, jclass klass, jfieldID field, jclass* declaring_class_ptr)
c.GetFieldModifiers. 获取某类的某字段的访问修饰符
jvmtiError GetFieldModifiers(jvmtiEnv* env, jclass klass, jfieldID field, jint* modifiers_ptr)
d.IsFieldSynthetic. 判断某类的某字段是否是虚构字段
jvmtiError IsFieldSynthetic(jvmtiEnv* env, jclass klass, jfieldID field, jboolean* is_synthetic_ptr)
所谓的虚构字段就是由编译器产生的而不是直接定义在源代码中的字段。
本文转自 charles_wang888 51CTO博客,原文链接:http://blog.51cto.com/supercharles888/1587889,如需转载请自行联系原作者