程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> Java性能優化權威指南-讀書筆記(五)-JVM性能調優-吞吐量,-jvm調優

Java性能優化權威指南-讀書筆記(五)-JVM性能調優-吞吐量,-jvm調優

編輯:JAVA綜合教程

Java性能優化權威指南-讀書筆記(五)-JVM性能調優-吞吐量,-jvm調優


吞吐量是指,應用程序的TPS: 每秒多少次事務,QPS: 每秒多少次查詢等性能指標。

吞吐量調優就是減少垃圾收集器消耗的CPU周期數,從而將更多的CPU周期用於執行應用程序。

CMS吞吐調優

CMS包括Minor GC所帶來的開銷應該小於10%,如果垃圾收集的開銷在3%或更少,說明通過調優吞吐量,提升性能的空間就極其有限了。

可用的調優方法如下:

1. 增大新生代空間,以降低Minor GC頻率,減少CPU周期占用;

2. 增加老年代空間,以降低CMS頻率,並可以減少老年代內存碎片;

3. 優化CMS周期的啟動條件,盡可能在較晚的時候進行;

總的來說,就是減少垃圾收集占用的CPU周期。

ParallelGC吞吐調優

這裡說的ParallelGC是指開啟了下面兩個JVM參數

-XX:+UseParallelGC
-XX:+UseParallelOldGC

對ParallelGC調優的目標是盡可能避免發生Full GC,這就需要優化對象老化頻率,可以調整Survivor空間實現對對象老化的優化。

使用ParallelGC時,垃圾收集的開銷應小於5%,如果已經減少到1%甚至更少,那基本上就已經達到了極限。

Survivor調優

ParallelGC默認可以自動調整Survivor空間,大部分應用用自動調整已經可以,對要求比較高的應用就需要關閉自動調整,進行手動調整。

為JVM添加下面兩個參數,只針對ParallelGC有用:

-XX:-UseAdaptiveSizePolicy     //關閉自適應調整
-XX:+PrintAdaptiveSizePolicy   //打印詳細Survivor空間占用日志

如下面日志:

2016-12-11T16:44:03.653+0800: 5.042: [GC (Allocation Failure) AdaptiveSizePolicy::update_averages:  
survived: 10464720  
promoted: 1096456  
overflow: true

survived:“TO”Survivor空間占用大小;

promoted: 新生代提升至老年代的對象大小;

overflow:是否有Survivor空間的對象溢出到老年代;

從上面的日志可以看出,Minor GC後新生代存活對象大小10M,因為沒有設置-XX:TargetSurvivorRatio,默認Survivor空間占用比率為50%,

所以Survivor空間應為20M。

 

找到穩定態下Full GC之間所有Minor GC中最大的存活對象大小,然後就可以調整Survivor空間大小。

原JVM參數如下:

-Xmx1024m –Xms1024m –Xmn50m -XX:SurvivorRatio=3

可以計算出:原Survivor空間:10M,原Eden空間:30M

現在增大Survivor空間到20M

保證Eden空間不變,則新生代大小為70M;

70M / (SurvivorRatio + 2)=20M,所以SurvivorRatio=1.5

保證老年代空間不變,則Java堆大小調整為1044M

所以最後JVM參數為:

-Xmx1044m -Xms1044m -Xmn70m -XX:SurvivorRatio=1.5

如果Java堆大小已經不能再增大,可以計算下Minor GC後,存活對象的最小值、最大值、平均值,如果不存在大幅波動,

可以嘗試提高Survivor空間的占用百分比-XX:TargetSurvivorRatio=<n>,其默認為50%。

並行線程調優

-XX:ParallelGCThreads  

並行垃圾收集器的線程數,建議收集線程數設置的小於默認值,否則大量GC線程會影響應用性能

其他性能命令行選項

-XX:+AggressiveOpts 自動優化,但有可能不太穩定 -XX:+DoEscapeAnalysis 逃逸分析 -XX:+UseBiasedLocking 偏向鎖 -XX:+UseLargePages 大頁面支持

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved