ibm jdk 1.5デフォルトのgcポリシーはパフォーマンスが悪い
1315 ワード
ibm jdk 1.5デフォルトのgcポリシーはパフォーマンスが悪い
ここ数日エンジンの性能をテストして、1つの単表でcaseを検索して、テストした結果は210 tpsで、cpuも正常で、85%ぐらいで、疑いもありません.
後で再度テストする時、gc logをプラスして、gc分析ツールでgcのスループットを分析して、スループットがとても低くて、意外にも77%ぐらいしかなくて、とてもおかしくて、gcログを見て、すべてglobal gcで、gc策略に問題があることを疑って、資料を調べて、次の文章を参考にしました:
http://www.ibm.com/developerworks/cn/java/j-ibmjava2/
デフォルトのgcポリシーは、スループットの最適化:
他のいくつかのgc戦略を抜きます.
他のGCポリシーに切り替えた理由
理由に切り替え私のアプリケーションはそんなに長いGC停止時間に耐えられません.GC停止時間が減少すれば、性能の低下も許容できる. 私のアプリケーションは64ビットプラットフォームで実行され、3 GBまたは4 GBを超える非常に大きなスタックを使用しています. 私のアプリケーションはGUIアプリケーションで、ユーザーの応答時間に注目しています. 私のアプリケーションには、短期的に生存する多くのオブジェクトが割り当てられています. スタックの空間が断片化した. 私のアプリケーションはトランザクションベースです(つまり、トランザクションがコミットされた後、トランザクション内のオブジェクトは生存しません). 大規模なマルチプロセッサコンピュータで、伸縮性の問題に遭遇しました.
genconポリシーを試してみると、hoho、いいやつ、テストcaseのスループットは290 tps(直接40%アップ)に上昇し、大げさすぎてgcスループットも98%に上昇し、以前1.4の時に世代分けのgcポリシーがなかったことを覚えています.また、ibm jdkは世代分けせず、世代分けメカニズムを導入した後、デフォルトのoptthruputポリシーが複雑になったという印象があります.以前ほど効率的ではありません.
ここでも目を覚ましてibm jdk 1.5のgc戦略に気をつけて、gc効率が低いことに気づいたときにgenconに切り替えて、大きなサプライズがあるかもしれません!
ここ数日エンジンの性能をテストして、1つの単表でcaseを検索して、テストした結果は210 tpsで、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
gencon
subpool
genconポリシーを試してみると、hoho、いいやつ、テストcaseのスループットは290 tps(直接40%アップ)に上昇し、大げさすぎてgcスループットも98%に上昇し、以前1.4の時に世代分けのgcポリシーがなかったことを覚えています.また、ibm jdkは世代分けせず、世代分けメカニズムを導入した後、デフォルトのoptthruputポリシーが複雑になったという印象があります.以前ほど効率的ではありません.
ここでも目を覚ましてibm jdk 1.5のgc戦略に気をつけて、gc効率が低いことに気づいたときにgenconに切り替えて、大きなサプライズがあるかもしれません!