版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、JVM 的回收机制详解和调优gc 即收集机制是指jvm 用于那些不再使用的对象所占用的内存。java语言并不要求jvm 有gc,也没有规定gc 如何工作。不过常用的 jvm 都有 gc,而且大多数gc 都使用类似的算法管理内存和执行收集操作。1.JVM 的gc 概述gc 即收集机制是指jvm 用于那些不再使用的对象所占用的内存。java 语言并不要求jvm 有gc,也没有规定gc 如何工作。不过常用的jvm 都有gc,而且大多数gc 都使用类似的算法管理内存和执行收集操作。在充分理解了收集算法和执行过程后,才能有效的优化它的性能。有些收集于特殊的应用程序。比如,实时应用程序主要是为了避免收集中
2、断,而大多数 OLTP 应用程序则注重整体效率。理解了应用程序的工作负荷和jvm 支持的收集算法,便可以进行优化配置收集器。收集的目的在于清除不再使用的对象。gc 通过确定对象是否被活动对象来确定是否收集该对象。gc 首先要判断该对象是否是时候可以收集。两种常用的方法是计数和对象遍历。1.1.计数计数对特定对象的所有数,也就是说,当应用程序创建以及超出范围时,jvm 必须适当增减数。当某对象的数为 0 时,便可以进行收集。1.2.对象遍历早期的 PS 使用计数,现在大多数 PS 采用对象遍历。对象遍历从一组对象开始,沿着整个对象图上的每条,递归确定可到达(XKGINGHRK)的对象。如果某对象
3、不能从这些根对象的一个(至少一个)到达,则将它作为垃圾收集。在对象遍历阶段,MI 必须记住哪些对象可以到达,以便删除不可到达的对象,这称为标记(SGXQOTM)对象。下一步,MI 要删除不可到达的对象。删除时,有些 MI 只是简单的扫描堆栈,删除未标记的未标记的对象,并它们的内存以生成新的对象,这叫做清除(Y)。这种方法在于内存会分成好多小段,而它们以用于新的对象,但是组合起来却很大。因此,许多 MI 可以重新组织内存中的对象,并进行压缩(IUSVGIZ),形成可利用的空间。为此,MI 需要停止其他的活动活动。这种方法意味着所有与应用程序相关的工作停止,只有MI 运行。结果,在响应期间增减了许
4、多混杂请求。另外,更复杂的MI 不断增加或同时运行以减少或者清除应用程序的中断。有的 MI 使用单线程完成这项工作,有的则采用多线程以增加效率。 几种回收机制 标记清除收集器这种收集器首先遍历对象图并标记可到达的对象,然后扫描堆栈以寻找未标记对象并它们的内存。这种收集器一般使用单线程工作并停止其他操作。 标记压缩收集器有时也叫标记清除压缩收集器,与标记清除收集器有相同的标记阶段。在第二阶段,则把标记对象到堆栈的新域中以便压缩堆栈。这种收集器也停止其他操作。 收集器这种收集器将堆栈分为两个域,常称为半空间。每次仅使用一半的空间,PS生成的新对象则放在另一半空间中。MI 运行时,它把可到达对象到另
5、一半空间,从而压缩了堆栈。这种方法适用于短生存期的对象,持续长生存期的对象则导致效率降低。 增量收集器增量收集器把堆栈分为多个域,每次仅从一个域收集。这会造成较小的应用程序中断。 分代收集器这种收集器把堆栈分为两个或多个域,用以存放不同的对象。PS 生成的新对象一般放在其中的某个域中。过一段时间,继续存在的对象将获得使用期并转入更长的域中。分代收集器对不同的域使用不同的算法以优化性能。 并发收集器并发收集器与应用程序同时运行。这些收集器在某点上(比如压缩时)一般都不得不停止其他操作以完成特定的任务,但是因为其他应用程序可进行其他的操作,所以中断其他处理的实际时间大大降低。 并行收集器并行收集器
6、使用某种传统的算法并使用多线程并行的执行它们的工作。在多IV 机器上使用多线程技术可以显著的提高 PGG 应用程序的可扩展性。 9T .UZ9VUZ 0SY 和 S堆的原始大小或最大值。下面令是把初始大小设置为 3:PGG SY SS S 为控制新域的大小,可使用 :4K8GZOU 设置新域在堆中所占的比例。下面令把整个堆设置成 S,新域比率设置成 ,即新域与旧域比例为 : ,新域为堆的 或 3:PGG SY S S S:4K8GZOU # 可使用 :4K9OK和 :3G4KYOK 设置新域的初始值和最大值。下面令把新域的初始值和最大值设置成 S:PGG SY S S S ST S域默认大小为
7、 S 运行程序时,PS 会调整域的大小以满足需要。每次调整时,PS 会对堆进行一次完全的收集。使用 :3G6KX9OK 标志来增加域搭大小。在=KH2UMOI 9KXKX 应用程序加载较多类时,经常需要增加域的最大值。当 PS 加载类时,域中的对象急剧增加,从而使 PS 不断调整域大小。为了避免调整,可使用 :6KX9OK 标志设置初始值。下面把域初始值设置成 S,最大值设置成 S PGG SY S S S ST S :6KXS9OK# S :3G6KXS9OK# S默认状态下,.UZ9VUZ 在新域中使用收集器。该域一般分为三个部分。第一部分为+JKT,用于生成新的对象。另两部分称为救助空间
8、,当 +JKT 充满时,收集器停止应用程序,把所有可到达对象到当前的 LXUS 救助空间,一旦当前的LXUS 救助空间充满,收集器则把可到达对象到当前的 ZU 救助空间。,XUS 和ZU 救助空间互换角色。维持活动的对象将在救助空间不断,直到它们获得使用期并转入旧域。使用 :9XOUX8GZOU 可控制新域子空间的大小。同 4K8GZOUT 一样,9XOUX8GZOUT 规定某救助域与+JKT 空间的比值。比如,以下命令把新域设置成 S,+JKT 占 S,每个救助域各占 S:PGG SY S S S ST S :9XOUX8GZOUT # 如前所述,默认状态下 .UZ9VUZ 对新域使用收集器
9、,对旧域使用标记清除压缩收集器。在新域中使用收集器有很多意义,因为应用程序生成的大部分对象是短的。理想状态下,所有过渡对象在移出 +JKT 空间时将被收集。如果能够这样的话,并且移出+JKT 空间的对象是长的,那么理论上可以立即把它们移进旧域,避免在救助空间反复。但是,应用程序不能适合这种理想状态,因为它们有一小部分中长的对象。最好是保持这些中长的对象并放在新域中,因为小部分的对象总比压缩旧域廉价。为控制新域中对象的,可用 :9XOUX8GZOU 控制救助空间的比例(该值是设置救助空间的使用比例。如救助空间位 3,该值 表示可用 1)。该值是一个百分比,默认值是 当较大的堆栈使用较低的YXOU
10、XXGZOU 时,应增加该值到 至 ,以更好利用救助空间。用 :SGZKTXOTM ZNXKYNURJ 可控制上限。为放置所有的全部发生以及希望对象从 KJKT 扩展到旧域,可以把3G:KTXOTM :NXKYNURJ 设置成 设置完成后,实际上就不再使用救助空间了,因此应把 9XOUX8GZOU 设成最大值以最大化 +JKT 空间,设置如下:PGG :3G:KTXOTM:NXKYNURJ# :9XOUX8GZOU (+ 08UIQOZ 03 的使用(KG =KH2UMOI 使用的新的 03 用于KR。在 (KG 安装完毕的目录下可以看到有一个类似于PXUIQOZ YV E E 的文件夹。这就
11、是(KG 新03所在目录。不同于.UZ9VUZ 把 0GG 字节码编译成本地码,它预先编译成类。08UIQOZ 还提供了更细致的功能用以观察 03 的运行状态,主要是独立的-;/控制台(只能适用于使用0XUIQOZ 才能使用PXUIQOZ YV E E 自带的IUTYURK一些 IV 及SKSUX_ 参数)或者=KH2UMOI 9KXKX 控制台。(KG 08UIQOZ 0MI:MIETGSK$,对应四个收集器分别为MKTIUV_,YOTMRKIUT,MKTIUT 以及VGXGRRKR 可使用 SY 和 S 设置堆的初始大小和最大值。要设置护理域,则使用 TY:PGG PXUIQOZ SY S
12、 S S MI:MKTIUT TY S尽管 08UIQOZ 支持 KXK:MI 开关,但它输出的信息会因收集器的不同而异。08UIQOZ 还支持SKSUX_、RUGJ 和 IUJKMKT 的输出。注意 :如果 使用 08UIQOZ 0SGTGMKSKTZ参数。 如何从 0: 6X-):OSK9ZY 开关,可以了解这些收集发生的时间,自 PS 启动以后以秒计量。最后,通过 : 6X.KGVZ-) 开关了解堆的更详细的信息。为了了解新域的情况,可以通过 :#6X:KTXOTM*OYZXOHZOUT 开关了解获得使用期的对象权。 6JS 系统 0SY,S 一般设为同样大小。 SST 是将 4K9OK
13、 与 3G4K9OK 设为一致。 S:6KX9OK S:4K9OK S 此值设大可调大新对象区,减少,RR -) 次数:3G4K9OK S:4K8GZ9OK 设了可不设。 : 9XOUX8GZOU :YGX4K-) 可用来设置并行收集:6GXGRRKR-):NXKGJY 可用来增加并行度 ;YK6GXGRRKR-) 设置后可以使用并行清除收集器:;YKJGVZOK9OK6UROI_ 与上面一个联合使用效果更好,利用它可以自动优化新域大小以及救助空间比值 客户机:通过在 0426 文件中设置参数来调整客户端 030426 中参数:OTOZOGR NKGV YOK 和SG NKGV YOK这可以在 LXGSKUXQ 的 8KWKYZ3GTGMKX 中生成 0426 文件时加入上述参数,但是这些值是要求根据客
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年23年级乘除法试题答案
- 2026年7b牛津英语期末测试题答案
- 2026年30道驾照笔试题目答案
- 2026年ai面试认知测试题答案
- 2026年119消防月测试题及答案
- 2026年8模试卷及答案
- 2026年2上语文期未试卷及答案
- 2026年500强英语面试题答案
- 2026年100道性格测试题答案
- 心肌梗死患者的家庭护理与支持
- 红细胞叶酸课件
- 2026年漯河职业技术学院单招职业技能考试必刷测试卷附答案
- 2026年开封大学单招职业适应性测试题库及参考答案详解一套
- DB65∕T 4464.5-2021 退化草地修复治理技术规范 第5部分:高寒草甸类
- 2026年辽宁职业学院单招(计算机)考试备考题库必考题
- 护理人员在康复护理中的角色定位
- 卫生事业单位招聘考试真题及答案汇编
- 视频会议设备调试要求
- 2023年昆明辅警招聘考试真题含答案详解(完整版)
- 工厂智能照明系统施工方案
- 物理信息神经网络在船舶水动力预报中的应用
评论
0/150
提交评论