文档详情

WebSphere Application Server V 垃圾回收策略介绍.docx

发布:2017-06-15约4.8千字共8页下载文档
文本预览下载声明
WebSphere Application Server V8 垃圾回收策略介绍(1)发布:2011-9-22 16:23 | 作者:lovewbs | 来源:本站 | 查看:153次IBM? WebSphere? Application Server 是 IBM 旗舰应用服务器产品,在 2011 年 6 月 17 日正式发布了 V8 版本。在 WebSphere Application Server V8 中有引入了很多新特性,例如,支持新的编程模型和新的标准,简化的安装过程,安全和性能方面的提高,以及服务器管理方面的新特性等等。本文将向您介绍 WebSphere Application Server V8 在 GC 策略方面的一些变化。WebSphere Application Server V6.1 和 V7 的用户,肯定都知道 WebSphere Application Server 的 GC 策略选项有-Xgcpolicy:optthruput-Xgcpolicy: optavgpause-Xgcpolicy: gencon-Xgcpolicy: subpool在 WebSphere Application Server V8 中 GC 策略有了一些变化或并且还有新增的特性。接下来,就将向您详细介绍。关于上述 GC 策略的介绍,您可以阅读参考资源中的相关文章来了解相关信息。GC 策略的改变默认 GC 策略的改变。在 WebSphere Application Server V8 之前,默认的 GC 策略是 optthruput。对于吞吐量比短暂的 GC 停顿时间更重要的应用程序,通常会采用这种 GC 策略。每当进行垃圾回收时,应用程序都会停顿。在 WebSphere Application Server V8 中,默认的 GC 策略变成了 gencon。这种 GC 策略以不同的方式处理短期存活对象和长期存活对象。采用这种策略,对于具有很多短期存活对象的应用程序会表现出更短的暂停时间,但是仍然能产生很好的吞吐 量。GC 策略 subpool,在 WebSphere Application Server V8 中,已经是不被推荐使用的了,如果使用这个 GC 策略的话,就等同于使用 optthruput。在 WebSphere Application Server V8 中引入新的 GC 策略 balanced。这种 GC 策略目的是用于内存大于 4G 的环境,并且这个 GC 策略选项仅在 64 位平台上才有。下面就将向您详细介绍这种新引入的 GC 策略。新的 GC 策略 Balanced首先,先对 Balance GC 策略进行一个总体的介绍,然后再您介绍该策略比较重要的几个概念,最后会告诉您在哪些场合下,我们适合用该策略。在 Balanced GC 策略中 Java Heap 采用的是基于区域的布局方式。这些区域都是独立管理的,这样可以避免较大 Heap 上的停顿时间。而且也可以利用现代服务器硬件 非统一内存访问架构(Non-Uniform Memory Architecture)所带来的好处。前面提到Balanced GC 策略的目的是用于内存大于 4G 的环境,并且只在 64 位平台上才有提供。您需要在命令行指定 -xgcploicy:blanced 来启用这个策略,同时还需要指定 -Xcompressedrefs 参数,因为 Balanced GC 策略只有当压缩列表 (compressd references) 特性被启用时才会生效。采中 Balanced GC 策略,Java Heap 会被分为成千上万个被称为“区域(region)”的等份。每一个区域都是独立的进行垃圾回收,这使得回收器可以只关注某些区域,通过对这些区域的处理, 可以以最少的处理来获得最大量的内存回收。对象由回收器分配到其选择的一组空闲的区域中,这些区域被称为 eden space。当这些 eden space 被占满之后,回收器会将应用程序停止,然后进行“部分垃圾回收(Partial Garbage Collection PGC)”。这个回收也可能会包括其它的非 eden space 的区域,如果回收器觉得这些区域也是值得回收的,它就会将这些区域也一同进行回收。当回收工作结束之后,应用程序线程继续,分配新的 eden space,直到这部分区域被占满。上述垃圾回收操作在整个应用程序的生命周期内进行。有时候,回收器也会进行全局标记阶段(Global Mark Phase GMP)来寻找更多的能被回收的内存。因为 PGC 在每次垃圾回收时,只是处理一部分的 Heap 区域,一些未被引入的对象很可能还会存在于 Heap 中。这个问题,就如同在并发
显示全部
相似文档