快速业务通道

实时Java,第4部分 - 实时垃圾收集 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16
,第4部分 - 实时垃圾收集(9) 时间:2011-06-22 Benjamin Biron Rya

图 10. 递减自由堆

实时Java,第4部分 - 实时垃圾收集 - 编程入门网

<gc> 标记的 interval 属性指的是从上次输出相同类型的冗余 GC 事件起所经过的时间。对于 heartbeat 事件类型,它用来表示从 trigger start 事件起所经过的时间(如果它是当前 GC 循环的第一次心跳)。

Tuning Fork

Tuning Fork 是一种独立的工具,用于调优 Metronome 以便更好地适合用户应用程序。Tuning Fork 让用户检查 GC 活动的很多细节,方法是在执行活动后通过跟踪日志检查或在运行时通过套接字检查。Metronome 构建时考虑了 Tuning Fork 并记录了很多可在 Tuning Fork 应用程序中检查的事件。例如,它显示了时间上的应用程序利用率并检查了用于各个 GC 阶段的时间。

图 11 演示了 Tuning Fork 所生成的 GC 性能概要图,包括目标利用率、堆内存使用和应用程序利用率:

图 11. Tuning Fork 性能概要

实时Java,第4部分 - 实时垃圾收集 - 编程入门网

使用 Metronome 时的注意事项

Metronome 竭力为 GC 提供短暂确定的暂停,在应用程序代码中和底层平台中出现了一些可能影响这些结果的情形,有时会导致暂停时间异常。使用标准 JDK 收集器带来的 GC 行为更改在此也会出现。

RTSJ 规定 GC 不能处理永久内存。因为类位于永久内存中,所以它们不服从 GC 并且因此不能被卸载。希望使用大量类的应用程序需要适当地调整永久空间,要卸载类的应用程序需要在 WebSphere Real Time 中调整其编程模型。

Metronome 中的 GC 工作是基于时间的,而对硬件时钟的任何更改都可能导致难于诊断的问题。使系统时间与 Network Time Protocol (NTP) 服务器同步然后让硬件时钟和系统时间同步就是一个这样的例子。这将表现为时间上突然跳跃到 GC 并可能导致维持利用率目标的失败或者可能导致内存不足的错误。

在单个机器上运行多个 JVM 可能造成 JVM 之间相互干扰,使利用率图发生倾斜。alarm 线程是一个高优先级 RT 线程,它会抢占任何其他具有较低优先级的线程,而 GC 线程仍然以 RT 优先级运行。如果在任何时间都有足够的 GC 和 alarm 线程是活动的,则没有活动的 GC 循环的 JVM 可能使其应用程序线程被其他 JVM 的 GC 和 alarm 线程抢占,而时间实际上分配给了应用程序,原因是该 VM 的 GC 是不活动的。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号