您的位置:首页 > 运维架构 > 网站架构

JPDA 架构研究7 - Agent利用环境指针访问VM(线程组管理篇)

2014-12-08 22:50 274 查看
引入:
上篇文章中我们讨论了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.所以某个线程组的孩子可以是子线程组,也可以是一些活着的子线程。所以这里可以看出,它会返回子线程的数量,子线程列表,子线程组数量,子线程组列表。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  JDWP.JPDA