首页 > 代码库 > JPDA 架构研究7 - Agent利用环境指针访问VM(线程组管理篇)
JPDA 架构研究7 - Agent利用环境指针访问VM(线程组管理篇)
引入:
上篇文章中我们讨论了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.所以某个线程组的孩子可以是子线程组,也可以是一些活着的子线程。所以这里可以看出,它会返回子线程的数量,子线程列表,子线程组数量,子线程组列表。
本文出自 “平行线的凝聚” 博客,请务必保留此出处http://supercharles888.blog.51cto.com/609344/1587695
JPDA 架构研究7 - Agent利用环境指针访问VM(线程组管理篇)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。