JPDA 架构研究9 - Agent利用环境指针访问VM (堆管理篇)
2014-12-08 22:54
591 查看
引入:
上文中我们讨论了Agent利用环境指针访问VM的堆栈操作部分,这里我们讨论堆操作部分。
分类5:堆操作
a. GetTag. 获取对象在堆上的唯一标识符(长整型)。
b.SetTag.为对象设置堆上的唯一标示符。
c.ForceGarbageCollection. 强制VM执行垃圾回收。
d.IterateOverObjectsReachableFromObject. 迭代某对象所能直接或者间接引用到的所有对象。
e.IterateOverReachableObjects.迭代堆上所有可以引用到的对象。
f.IterateOverHeap.迭代堆上的所有对象,包含可以到达的和不可到达的。
g.IterateOverInstancesOfClass.迭代某个给定的类的堆上所有实例。包括可以和不可以到达的。
h.GetObjectsWithTags.获取给定的堆标记的对象列表。
上文中我们讨论了Agent利用环境指针访问VM的堆栈操作部分,这里我们讨论堆操作部分。
分类5:堆操作
a. GetTag. 获取对象在堆上的唯一标识符(长整型)。
jvmtiError GetTag(jvmtiEnv* env, jobject object, jlong* tag_ptr)
b.SetTag.为对象设置堆上的唯一标示符。
jvmtiError SetTag(jvmtiEnv* env, jobject object, jlong tag)
c.ForceGarbageCollection. 强制VM执行垃圾回收。
jvmtiError ForceGarbageCollection(jvmtiEnv* env)该方法只有等垃圾回收做完才返回。
d.IterateOverObjectsReachableFromObject. 迭代某对象所能直接或者间接引用到的所有对象。
jvmtiError IterateOverObjectsReachableFromObject(jvmtiEnv* env, jobject object, jvmtiObjectReferenceCallback object_reference_callback, void* user_data)
e.IterateOverReachableObjects.迭代堆上所有可以引用到的对象。
jvmtiError IterateOverReachableObjects(jvmtiEnv* env, jvmtiHeapRootCallback heap_root_callback, jvmtiStackReferenceCallback stack_ref_callback, jvmtiObjectReferenceCallback object_ref_callback, void* user_data)
f.IterateOverHeap.迭代堆上的所有对象,包含可以到达的和不可到达的。
jvmtiError IterateOverHeap(jvmtiEnv* env, jvmtiHeapObjectFilter object_filter, jvmtiHeapObjectCallback heap_object_callback, void* user_data)
g.IterateOverInstancesOfClass.迭代某个给定的类的堆上所有实例。包括可以和不可以到达的。
jvmtiError IterateOverInstancesOfClass(jvmtiEnv* env, jclass klass, jvmtiHeapObjectFilter object_filter, jvmtiHeapObjectCallback heap_object_callback, void* user_data)
h.GetObjectsWithTags.获取给定的堆标记的对象列表。
jvmtiError GetObjectsWithTags(jvmtiEnv* env, jint tag_count, const jlong* tags, jint* count_ptr, jobject** object_result_ptr, jlong** tag_result_ptr)
相关文章推荐
- JPDA 架构研究8 - Agent利用环境指针访问VM(堆栈管理篇)
- JPDA 架构研究14 - Agent利用环境指针访问VM(对象管理篇)
- JPDA 架构研究10 - Agent利用环境指针访问VM(局部变量管理篇)
- JPDA 架构研究6 - Agent利用环境指针访问VM (线程管理篇)
- JPDA 架构研究13 - Agent利用环境指针访问VM(类管理篇)
- JPDA 架构研究7 - Agent利用环境指针访问VM(线程组管理篇)
- JPDA 架构研究5 - Agent利用环境指针访问VM (内存管理篇)
- JPDA 架构研究11 - Agent利用环境指针访问VM(断点操作篇)
- JPDA 架构研究15 - Agent利用环境指针访问VM(字段访问篇)
- JPDA 架构研究16 - Agent利用环境指针访问VM(方法访问篇)
- JPDA 架构研究12 - Agent利用环境指针访问VM(观察字段篇)
- 利用ADO.NET的体系架构打造通用的数据库访问通用类(续)
- 企业基础架构 第一季 利用海蜘蛛软路由模拟企业网络环境
- 利用ADO.NET的体系架构打造通用的数据库访问通用类
- 读书笔记:C++中利用智能指针和值型类防止内存非法访问
- 读书笔记:C++中利用智能指针和值型类防止内存非法访问
- 利用ADO.NET的体系架构打造通用的数据库访问通用类
- 【VBA研究】Excel VBA利用ADODB访问数据库使用小结
- .NET 分布式架构开发“.NET研究”实战之三 数据访问深入一点的思考
- tc2.0环境下的C语言研究-需要耐心的指针研究