JPDA 架构研究7 - Agent利用环境指针访问VM(线程组管理篇)
2014-12-08 22:50
274 查看
引入:
上篇文章中我们讨论了Agent利用环境指针访问VM的线程操作,这里讨论线程组操作。
分类3:线程组操作
a.GetTopThreadGroups.让Agent获取VM中的所有全局的线程组。
b.GetThreadGroupInfo。获取某个线程组的信息。
c.GetThreadGroupChildren.获取某指定线程组的孩子们。
上篇文章中我们讨论了Agent利用环境指针访问VM的线程操作,这里讨论线程组操作。
分类3:线程组操作
a.GetTopThreadGroups.让Agent获取VM中的所有全局的线程组。
jvmtiError GetTopThreadGroups(jvmtiEnv* env, jint* group_count_ptr, jthreadGroup** groups_ptr)函数会返回全局的线程组的数量和线程组的列表。
b.GetThreadGroupInfo。获取某个线程组的信息。
typedef struct { jthreadGroup parent; char* name; jint max_priority; jboolean is_daemon; } jvmtiThreadGroupInfo;
jvmtiError GetThreadGroupInfo(jvmtiEnv* env, jthreadGroup group, jvmtiThreadGroupInfo* info_ptr)从这里可以看出,它会包含线程组的父亲,线程组名字(UTF-8格式),最大优先级,是否守护线程组等信息。
c.GetThreadGroupChildren.获取某指定线程组的孩子们。
jvmtiError GetThreadGroupChildren(jvmtiEnv* env, jthreadGroup group, jint* thread_count_ptr, jthread** threads_ptr, jint* group_count_ptr, jthreadGroup** groups_ptr)因为线程组和线程的关系也遵守设计模式中的Composite Design Pattern.所以某个线程组的孩子可以是子线程组,也可以是一些活着的子线程。所以这里可以看出,它会返回子线程的数量,子线程列表,子线程组数量,子线程组列表。
相关文章推荐
- JPDA 架构研究9 - Agent利用环境指针访问VM (堆管理篇)
- JPDA 架构研究14 - Agent利用环境指针访问VM(对象管理篇)
- JPDA 架构研究10 - Agent利用环境指针访问VM(局部变量管理篇)
- JPDA 架构研究6 - Agent利用环境指针访问VM (线程管理篇)
- JPDA 架构研究13 - Agent利用环境指针访问VM(类管理篇)
- JPDA 架构研究8 - 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语言研究-需要耐心的指针研究