码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2014-12-09 02:00:53      阅读:205      评论:0      收藏:0      [点我收藏+]

标签:jdwp.jpda


引入:

上篇文章中我们讨论了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(线程组管理篇)

标签:jdwp.jpda

原文地址:http://supercharles888.blog.51cto.com/609344/1587695

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!