Java技术,IBM气势: 垃圾堆积战略,第1部份: 差别的战略供应了灵[Java编程]
本文“Java技术,IBM气势: 垃圾堆积战略,第1部份: 差别的战略供应了灵[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
可以利用 4 种差别的战略配置 IBM Developer Kit for the Java 5.0 Platform(IBM SDK)中的垃圾汇集(GC).本文(关于 GC 的两篇文章的第一篇)介绍差别的垃圾汇集战略并谈论它们的性质.在阅读本文之前,您应当对 Java 平台中的垃圾汇集有基本的熟习.第 2 部份将给出一种挑选战略的量化办法,以及一些示例.
为什么要有差别的 GC 战略?
可以利用差别的战略使开辟人员增添了对利用程序的掌握本领.有很多种 GC 算法,每种算法各有优缺陷,这取决于工作负载的范例.(假如您不熟习 GC 算法的普通性主题,那么请拜见 参考资料 中其他读物的链接.在 IBM SDK 5.0 中,可以用 4 种战略 之一配置垃圾汇集,每种战略都利用自己的算法.默许战略关于大大都利用程序已经充足了.假如对利用程序的性能没有分外的要求,那么您对本文(和下一篇文章)的内容大概不感爱好;可以在不改变 GC 战略的情形下运行 IBM SDK 5.0.但是,假如利用程序需求最优的性能,大概很关注 GC 停登时间的长度,那么请读下去.您会看到最新的版本比从前的版本供应了更多挑选.
那么,为什么不让 Java 运行时的 IBM 实现自动地替您做出挑选呢?因为这不老是可行的.运行时很难理解您的需求.在某些情形下,但愿利用程序有很高的吞吐量;而在其他情形下,但愿削减停登时间.
表 1 列出可用的战略并注释每种战略应当在什么时刻利用.背面几节辨别具体描写每种战略的性质.
战略 | 选项 | 描写 |
针对吞吐量举行优化 | -Xgcpolicy:optthruput (可选) | 默许战略.关于吞吐量比短暂的 GC 停顿更重要的利用程序,普通利用这种战略.每当举行垃圾汇集时,利用程序城市停顿. |
针对停登时间举行优化 | -Xgcpolicy:optavgpause | 通过并发地履行一部份垃圾汇集,在高吞吐量和短 GC 停顿之间举行折中.利用程序停顿的时间更短. |
分代并发 | -Xgcpolicy:gencon | 以差别方法处理短时间存活的对象和长期存活的对象.采取这种战略时,具有很多短时间存活对象的利用程序会表现出更短的停登时间,同时仍旧产生很好的吞吐量. |
子池 | -Xgcpolicy:subpool | 采取与默许战略类似的算法,但是采取一种对比合适多处理器计算机的分配战略.倡议关于有 16 个或更多处理器的 SMP 计算机利用这种战略.这种战略只能在 IBM pSeries® 和 zSeries® 平台上利用.需求扩大到大型计算机上的利用程序可以从这种战略中受益. |
一些术语的定义
吞吐量是利用程序处理的数据量.衡量吞吐量的尺度是与具体利用程序相关的.
停登时间是垃圾汇集器将全部利用程序线程停下来,从而对堆举行汇集所阅历的时间.
在本文中,用表 1 中号令行选项中的缩写来表示这些战略:optthruput 表示针对吞吐量举行优化,optavgpause 表示针对停登时间举行优化,gencon 表示分代并发,subpool 表示子池.
什么时刻应当考虑采取非默许的 GC 战略?
倡议您老是先利用默许 GC 战略.在放弃默许战略之前,需求理解在哪些情形下应当采取其他战略.表 2 给出了一些缘由:
切换到 | 缘由 |
optavgpause | 我的利用程序无法忍耐那么长的 GC 停登时间.假如 GC 停登时间可以削减的话,性能降低一些也可以承受.
我的利用程序正在一个 64 位平台上运行并利用非常大的堆 —— 超越 3 或 4GB. 我的利用程序是一个 GUI 利用程序,我很关注用户呼应时间. |
gencon | 我的利用程序分配了很多短时间存活的对象.
堆空间呈现碎片化. 我的利用程序是基于事件的(也就是说,在事件提交之后,事件中的对象就不再存活了). |
subpool | 在大型多处理器计算机上,我碰到了可伸缩性问题. |
以上是“Java技术,IBM气势: 垃圾堆积战略,第1部份: 差别的战略供应了灵[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |