年輕代大小選擇
響應時間優先的應用:儘量設大,直到接近系統的最低響應時間限制(根據實際狀況選擇)。在此種狀況
下,年輕代收集發生的頻率也是最小的。同時,減小到達年老代的對象。
吞吐量優先的應用:儘量的設置大,可能到達Gbit的程度。由於對響應時間沒有要求,垃圾收集能夠並行進
行,通常適合8CPU以上的應用。
年老代大小選擇
響應時間優先的應用:年老代使用併發收集器,因此其大小須要當心設置,通常要考慮併發會話率和會話持續
時間等一些參數。若是堆設置小了,能夠會形成內存碎片、高回收頻率以及應用暫停而使用傳統的標記清除方
式;若是堆大了,則須要較長的收集時間。最優化的方案,通常須要參考如下數據得到:
1. 併發垃圾收集信息
2. 持久代併發收集次數 html
3. 傳統GC信息
4. 花在年輕代和年老代回收上的時間比例
減小年輕代和年老代花費的時間,通常會提升應用的效率
吞吐量優先的應用
通常吞吐量優先的應用都有一個很大的年輕代和一個較小的年老代。緣由是,這樣能夠儘量回收掉大部分短
期對象,減小中期的對象,而年老代盡存放長期存活對象。
較小堆引發的碎片問題
由於年老代的併發收集器使用標記、清除算法,因此不會對堆進行壓縮。當收集器回收時,他會把相鄰的空間
進行合併,這樣能夠分配給較大的對象。可是,當堆空間較小時,運行一段時間之後,就會出現「碎片」,如
果併發收集器找不到足夠的空間,那麼併發收集器將會中止,而後使用傳統的標記、清除方式進行回收。若是
出現「碎片」,可能須要進行以下配置:
1. -XX:+UseCMSCompactAtFullCollection:使用併發收集器時,開啓對年老代的壓縮。
2. -XX:CMSFullGCsBeforeCompaction=0:上面配置開啓的狀況下,這裏設置多少次Full GC後,對年老
代進行壓縮 算法
調優參考文獻:http://www.javashuo.com/article/p-gedyqnwy-eu.htmlsegmentfault
https://blog.csdn.net/rickyit/article/details/53895060併發
http://www.javashuo.com/article/p-nqwdteob-md.html優化
https://www.cnblogs.com/kongzhongqijing/articles/3625340.htmlspa