ART虚拟机GC系统优化研究
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
的方 式优化 G C系 统 性 能 ,最 后 测 试 多组应 用程 序对 比优 化 前后 在
I m a g e 髓
G c 次数 、暂停 时间和 G c 总时间等 方 面的 差异 。整体 平 均暂停 时间
相 较 于优化 前 降低 2 0 %以 上 , 而 平均G c总 次 数 减 少 5次 以 上 , 证 明 本 文 实 验 条 件 下 动 态 设 置 堆 利 用率 的方式优化 F u 1 1 G C对 G c系 统性能的提 高是有效的。
D a t a B a s e T e c h n i q u e・ 数据库技术
A R T虚拟机 G C系统优化研 究
文/ 张加 帅
表 1 :G C 算法 对 比
A n d r o i d系 统 中 虚 拟 机 通 过 提 供 垃 圾 回 收机 制 ( G a r b a g e C o l l e c t i o n ,G C) 实 现 自 动 内 存
来自百度文库
管 理,但 是 这一机 制 在 简化应 用 开发 人 员 内存 管理 负担 、避免 内 存 泄漏 问题 的 同时也 给 系统 带来 了内存 驻 留、响 应 延迟 、并发 阻 碍 等 负面影 响 A n d r o i d 5 . 0以 后 ,G o o g 1 e 用A R T 虚 拟机 替 换 掉
记一 清 除算法 ( Ma r k - S we e p GC)、复制 算法 ( Co p y i n g GC) 、 标记 一 合并算法 ( Ma rk - C o mp a c t
G C ),后面 三种算 法属 于追踪 式算法 ,如表 A R T虚 拟 机 G C子 系 统 对 A n d r o i d系 统 和上层应用 程序 的稳定性和流畅性具有非常大
D a l v i k虚 拟 机 , 为 了 更 好 地 利 用
A R T 虚拟机 自 动内 存 管理的特性 , 应用开发人 员有 必要 深入理解 A R T 虚 拟机 垃圾 回 收机 制 的 实现 。本 文从 G c 算 法和堆分 配过程研 究 了 A R T虚 拟机 G C系统 ,本 文提 出的 动态设置堆利用率以减 少 F u 1 1 G C
F u l l G C的方 式优 化 G C系 统性 能,最后测 试
G C 。应用 在 前 台时候 设置 G C采 用 Ma r k -
S we e p算法 ,应用运 行在后 台时候设置 G C采 用S e mi . S p a c e算法 。本 文主 要 关注运 行 在前
Z y g o t e S p a c e在 Z y g o t e进 程和 应 用 程 序 进 程 之 间共 享,存 放 Z y g o t e 进 程所 需 的预加 载 的 类 、资源 和对 象,它 是 Z y g o t e进程 在 f o r k第
一
多组应用程序对 比优化 前后在 G C次数、暂停
时 间和 GC总时间等方面的差异。
台的 Ma r k . S w e e p算法的执行性能。
Ma r k - S we e p:它 的 大 致思 想是 ,将 所有 的对象在 内存 中的位置记录在位 图A中。 然后 , 从所有对 象的根 出发 , 扫描根对象 的所有 引用 , 扫描根 对象的所有引用的引用 ,一层层逐级扫 描,直到叶子节点的对象 。在这个逐级扫描 的
1垃圾 回收机制
1 . 1堆 内存 的对 象分配和释放
AR T虚 拟机 实现 的垃圾 回收机 制 是一种
个应 用程 序 时候 从 No n - Mo v i n g S p a c e划分
出来 的。N o n - Mo v i n g S p a c e 是用来存放不 需要
移动 的对 象的,有些对象例如类对象、类方法
的影 响 。本 文提 出 的 动 态 设 置 堆 利 用 率 以减 少 1 所示 。
S we 印 GC堆结 构分 6个 区域, 分别 为 I ma g e
Sp a c e , Zy go t e Sp a c e ,No n — Mo v i n g Sp a c e ,
AR T虚拟 机 默认 的两种 垃圾 回收 技术 ,
图1 :M a r k — S w e e p G C堆 空 间结 构
或 溢 出 的 问题 , 如果 开 发人 员 不 了 解 虚 拟 机 内
1 . 3 A R T 虚 拟 机 的 堆 结 构
存管理机制 ,那 么解 决这类 问题就变得棘手 。 堆 ( H e a p )可 以是 由字构成的连续数组 , 1 . 2 A R T 虚拟机 的G c 算法 J a v a垃圾 回收机 制采用的主流 G C算法包
和 类 成 员 变量 对 象 一 经 加 载 后 , 就 基 本 一 直 存
在 ,频 繁的移动此类对象代价较大且没必要 。
a r g e Ob j e c t S p a c e 是用来分配大对 象的,当分 自动内存管理机制,对象分配和收集都在堆上 过 程中,将涉及到的对象的位置都记录在位 图 L 配的原子类型数组的大小大于 3个 内存页 时, 进 行。传 统的 C, C + +是没有 GC的,初始化对 B中 。扫描结束后 ,对 比两张位 图 A和 B:所 就把 此对 象分 配在 L a r g e O b j e c t S p a c e中 。其 象然后分配 内存 空间需要手动地 ma l l o c / n e w, 有 A 中置位 的位 置, 却没有 B中被置 位 ,被 他 的对 象就分配在 Ma i n S p a c e中 当需要 销毁对 象时 候需要 手动地 f r e e / d e l e t e 。 视 为垃圾 。 并根据位 图中的索 引检索得到对象 , 内存 管理使用这种模式导致至少两个 明显 的问 题:指针悬挂和 内存泄漏 。而采用 了垃圾 回收
也可 以组 织成 不连续 、由字构成的块的集合 ,
与数据结构 中堆 的概念 不同,内存管理中的堆 用来存放各种用户或 系统申请 的数据对象,在 内存 中占据非常 大的空间,因此也常将堆空间 用 内存来代替 。
如 图 1所 示 ,AR T 虚 拟 机 中 Ma rk .
括 :引用计数算 法 ( R e f e r e n c e c o u n t i n g )、标 【 关键词 】A R T 虚拟机 G c系统 堆利用率
一
种 是 Ma r k - S we e p ,另 一 种 是 S e mi . S p a c e
L rg a e Ob j e c t S p a c e 、Ma i n S p a c e以 及 Ba c k u p
S p a c e 。I ma g e S p a c e存 放 预 加 载 的 系 统 类 对 象 ,
I m a g e 髓
G c 次数 、暂停 时间和 G c 总时间等 方 面的 差异 。整体 平 均暂停 时间
相 较 于优化 前 降低 2 0 %以 上 , 而 平均G c总 次 数 减 少 5次 以 上 , 证 明 本 文 实 验 条 件 下 动 态 设 置 堆 利 用率 的方式优化 F u 1 1 G C对 G c系 统性能的提 高是有效的。
D a t a B a s e T e c h n i q u e・ 数据库技术
A R T虚拟机 G C系统优化研 究
文/ 张加 帅
表 1 :G C 算法 对 比
A n d r o i d系 统 中 虚 拟 机 通 过 提 供 垃 圾 回 收机 制 ( G a r b a g e C o l l e c t i o n ,G C) 实 现 自 动 内 存
来自百度文库
管 理,但 是 这一机 制 在 简化应 用 开发 人 员 内存 管理 负担 、避免 内 存 泄漏 问题 的 同时也 给 系统 带来 了内存 驻 留、响 应 延迟 、并发 阻 碍 等 负面影 响 A n d r o i d 5 . 0以 后 ,G o o g 1 e 用A R T 虚 拟机 替 换 掉
记一 清 除算法 ( Ma r k - S we e p GC)、复制 算法 ( Co p y i n g GC) 、 标记 一 合并算法 ( Ma rk - C o mp a c t
G C ),后面 三种算 法属 于追踪 式算法 ,如表 A R T虚 拟 机 G C子 系 统 对 A n d r o i d系 统 和上层应用 程序 的稳定性和流畅性具有非常大
D a l v i k虚 拟 机 , 为 了 更 好 地 利 用
A R T 虚拟机 自 动内 存 管理的特性 , 应用开发人 员有 必要 深入理解 A R T 虚 拟机 垃圾 回 收机 制 的 实现 。本 文从 G c 算 法和堆分 配过程研 究 了 A R T虚 拟机 G C系统 ,本 文提 出的 动态设置堆利用率以减 少 F u 1 1 G C
F u l l G C的方 式优 化 G C系 统性 能,最后测 试
G C 。应用 在 前 台时候 设置 G C采 用 Ma r k -
S we e p算法 ,应用运 行在后 台时候设置 G C采 用S e mi . S p a c e算法 。本 文主 要 关注运 行 在前
Z y g o t e S p a c e在 Z y g o t e进 程和 应 用 程 序 进 程 之 间共 享,存 放 Z y g o t e 进 程所 需 的预加 载 的 类 、资源 和对 象,它 是 Z y g o t e进程 在 f o r k第
一
多组应用程序对 比优化 前后在 G C次数、暂停
时 间和 GC总时间等方面的差异。
台的 Ma r k . S w e e p算法的执行性能。
Ma r k - S we e p:它 的 大 致思 想是 ,将 所有 的对象在 内存 中的位置记录在位 图A中。 然后 , 从所有对 象的根 出发 , 扫描根对象 的所有 引用 , 扫描根 对象的所有引用的引用 ,一层层逐级扫 描,直到叶子节点的对象 。在这个逐级扫描 的
1垃圾 回收机制
1 . 1堆 内存 的对 象分配和释放
AR T虚 拟机 实现 的垃圾 回收机 制 是一种
个应 用程 序 时候 从 No n - Mo v i n g S p a c e划分
出来 的。N o n - Mo v i n g S p a c e 是用来存放不 需要
移动 的对 象的,有些对象例如类对象、类方法
的影 响 。本 文提 出 的 动 态 设 置 堆 利 用 率 以减 少 1 所示 。
S we 印 GC堆结 构分 6个 区域, 分别 为 I ma g e
Sp a c e , Zy go t e Sp a c e ,No n — Mo v i n g Sp a c e ,
AR T虚拟 机 默认 的两种 垃圾 回收 技术 ,
图1 :M a r k — S w e e p G C堆 空 间结 构
或 溢 出 的 问题 , 如果 开 发人 员 不 了 解 虚 拟 机 内
1 . 3 A R T 虚 拟 机 的 堆 结 构
存管理机制 ,那 么解 决这类 问题就变得棘手 。 堆 ( H e a p )可 以是 由字构成的连续数组 , 1 . 2 A R T 虚拟机 的G c 算法 J a v a垃圾 回收机 制采用的主流 G C算法包
和 类 成 员 变量 对 象 一 经 加 载 后 , 就 基 本 一 直 存
在 ,频 繁的移动此类对象代价较大且没必要 。
a r g e Ob j e c t S p a c e 是用来分配大对 象的,当分 自动内存管理机制,对象分配和收集都在堆上 过 程中,将涉及到的对象的位置都记录在位 图 L 配的原子类型数组的大小大于 3个 内存页 时, 进 行。传 统的 C, C + +是没有 GC的,初始化对 B中 。扫描结束后 ,对 比两张位 图 A和 B:所 就把 此对 象分 配在 L a r g e O b j e c t S p a c e中 。其 象然后分配 内存 空间需要手动地 ma l l o c / n e w, 有 A 中置位 的位 置, 却没有 B中被置 位 ,被 他 的对 象就分配在 Ma i n S p a c e中 当需要 销毁对 象时 候需要 手动地 f r e e / d e l e t e 。 视 为垃圾 。 并根据位 图中的索 引检索得到对象 , 内存 管理使用这种模式导致至少两个 明显 的问 题:指针悬挂和 内存泄漏 。而采用 了垃圾 回收
也可 以组 织成 不连续 、由字构成的块的集合 ,
与数据结构 中堆 的概念 不同,内存管理中的堆 用来存放各种用户或 系统申请 的数据对象,在 内存 中占据非常 大的空间,因此也常将堆空间 用 内存来代替 。
如 图 1所 示 ,AR T 虚 拟 机 中 Ma rk .
括 :引用计数算 法 ( R e f e r e n c e c o u n t i n g )、标 【 关键词 】A R T 虚拟机 G c系统 堆利用率
一
种 是 Ma r k - S we e p ,另 一 种 是 S e mi . S p a c e
L rg a e Ob j e c t S p a c e 、Ma i n S p a c e以 及 Ba c k u p
S p a c e 。I ma g e S p a c e存 放 预 加 载 的 系 统 类 对 象 ,