JPDA 架构研究9 - Agent利用环境指针访问VM (堆管理篇)

简介:

引入:

上文中我们讨论了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)




本文转自 charles_wang888 51CTO博客,原文链接:http://blog.51cto.com/supercharles888/1587699,如需转载请自行联系原作者
目录
相关文章
|
7月前
|
设计模式 架构师 Java
阿里P8架构师都要学习研究的java加强版23种设计模式神级PDF文档
说在前面的话 Java作为老牌纯正的编程语言,在规范性上有着天然优势。因此本版的设计模式讲解全部用Java语言来描述,并针对Java语言的特性对讲解内容做了相当大的改动。 不知道大家是否听过编程界的一段话:掌握设计模式相当于华山派的"气宗",是程序员的内功修为,虽然在同样的学习时间下,类似Python这种"剑宗"的开发模式见效更快,但是长远来看,"气宗"才是走向软件架构师以上级别的必由之路。 所以,掌握气宗就掌握了编程命脉,然而学习设计模式有四大境界: 接下来给大家分享的就是java溢彩加强版大话设计模式包含的内容知识点。 总目录 主要内容 本文是百万销量的经典畅销书《
131 0
|
10月前
|
Linux Anolis 异构计算
关于远程直接内存访问技术 RDMA 的高性能架构设计介绍
本文介绍 RDMA 技术的基本原理及交流在工程上的设计思路。
|
1天前
|
消息中间件 存储 SQL
Flume【基础知识 01】简介 + 基本架构及核心概念 + 架构模式 + Agent内部原理 + 配置格式(一篇即可入门Flume)
【2月更文挑战第18天】Flume【基础知识 01】简介 + 基本架构及核心概念 + 架构模式 + Agent内部原理 + 配置格式(一篇即可入门Flume)
513 0
|
8月前
|
存储 缓存 Kubernetes
基于 ACK Fluid 的混合云优化数据访问(一):场景与架构
基于 ACK Fluid 的混合云优化数据访问(一):场景与架构
|
9月前
|
存储 监控 关系型数据库
|
9月前
|
存储 人工智能 Cloud Native
云原生大数据架构实践与思考-DataFunTalk
导读: 作者:振策-阿里云计算平台-产品解决方案, 20230805 本文将分享当前云原生大数据架构的发展历程/架构定义/核心能力/应用场景及趋势思考。主要包括以下四个部分: - 从大数据上云看架构 - 云原生数据平台的核心能力 - Data+AI with Cloud-Native - 未来趋势与思考
1408 0
|
11月前
|
数据采集 存储 负载均衡
大数据数据采集的数据采集(收集/聚合)的Flume之架构模式的并联Agent
在Flume中,架构模式是数据采集和传输过程中最核心的部分。Flume支持多种不同的架构模式,其中并联Agent架构模式是一种比较常见的模式。
98 0
|
12月前
|
数据采集 存储 监控
大数据数据采集的数据采集(收集/聚合)的Flume之架构模式的串联Agent
在Flume中,架构模式是数据采集和传输过程中最核心的部分。Flume支持多种不同的架构模式,其中串联Agent架构模式是一种比较常见的模式。
60 0
|
12月前
|
数据采集 存储 监控
大数据数据采集的数据采集(收集/聚合)的Flume之架构模式的单Agent
在Flume中,架构模式是数据采集和传输过程中最核心的部分。Flume支持多种不同的架构模式,其中单Agent架构模式是最常见的一种。
78 0
|
数据采集 机器学习/深度学习 设计模式
卷麻了! nnUNet 研究团队重磅新作 | MedNeXt: 新一代分割架构之王,刷新多项榜单记录!
卷麻了! nnUNet 研究团队重磅新作 | MedNeXt: 新一代分割架构之王,刷新多项榜单记录!
594 0