ibm jdk 1.5缺省用的gc策略性能很差

          這幾天測試一個引擎的性能,用一個單表查詢的case,測試出來的結果是210tps,cpu也正常,在85%左右,也沒懷疑。

          后面再重新測試的時候,加上了gc log,用gc分析工具分析了一下gc的吞吐量,發現吞吐量奇低,竟然只有77%左右,很是奇怪,看了一下gc日志,所有都是global gc, 懷疑gc策略有問題,查了一下資料,參考了下面一篇文章:

          http://www.ibm.com/developerworks/cn/java/j-ibmjava2/

          缺省gc策略是針對吞吐量進行優化:-Xgcpolicy:optthruput ,對于吞吐量比短暫的 GC 停頓更重要的應用程序,通常使用這種策略。每當進行垃圾收集時,應用程序都會停頓。

           

          我摘下面一段其他幾個gc策略:

          切換到其他 GC 策略的原因

          切換到
          原因

          optavgpause

          • 我的應用程序無法忍受那么長的 GC 停頓時間。如果 GC 停頓時間能夠減少的話,性能降低一些也可以接受。
          • 我的應用程序正在一個 64 位平臺上運行并使用非常大的堆 —— 超過 3 或 4GB。
          • 我的應用程序是一個 GUI 應用程序,我很關注用戶響應時間。

          gencon

          • 我的應用程序分配了許多短期存活的對象。
          • 堆空間出現碎片化。
          • 我的應用程序是基于事務的(也就是說,在事務提交之后,事務中的對象就不再存活了)。

          subpool

          • 在大型多處理器計算機上,我遇到了可伸縮性問題。

           

          試了一下gencon策略,hoho,好家伙,測試case的吞吐量竟然提升到290tps(直接提升40%),太夸張了,gc吞吐量也提升到了98%,記得以前1.4的時候沒有分代的gc策略,而且印象中,ibm jdk不分代,估計是引入分代機制之后,缺省的optthruput策略變得復雜起來,不像以前那樣效率高了。

           

          這里也給大家提個醒,當心ibm jdk 1.5的gc策略,發現gc效率很低的時候切換到gencon,也許會有很大的驚喜!

          posted on 2008-04-14 20:38 tacy lee 閱讀(4456) 評論(2)  編輯  收藏 所屬分類: 性能相關

          評論

          # re: ibm jdk 1.5缺省用的gc策略性能很差 2008-04-17 23:51 syxlw

          請問使用什么工具來看gc吞吐量, 主要看哪個參數?  回復  更多評論   

          # re: ibm jdk 1.5缺省用的gc策略性能很差 2008-04-18 09:22 tacy lee

          用日志查看工具http://www.alphaworks.ibm.com/tech/pmat

          打開一個gc log文件,看里面的overall garbage collection overhead  回復  更多評論   

          主站蜘蛛池模板: 甘肃省| 榆林市| 顺昌县| 东安县| 乌兰浩特市| 合山市| 金坛市| 嵩明县| 松溪县| 永定县| 平度市| 来宾市| 大渡口区| 巫山县| 黑山县| 台东市| 乌苏市| 堆龙德庆县| 泾川县| 剑阁县| 宁晋县| 巧家县| 孝感市| 嫩江县| 湄潭县| 九江县| 施甸县| 平遥县| 安化县| 通河县| 来凤县| 汉沽区| 綦江县| 城固县| 托克托县| 葫芦岛市| 青阳县| 鸡西市| 塘沽区| 普安县| 平乐县|