1. 程式人生 > >關於tomcat的記憶體引數優化——如何配置catalina.sh的JAVA_OPTS?

關於tomcat的記憶體引數優化——如何配置catalina.sh的JAVA_OPTS?

以下是實體記憶體為16G的建議配置:

 

export JAVA_OPTS="-server -Xms4096m -Xmx4096m -Xss256k -XX:PermSize=256m -XX:MaxPermSize=4096m -XX:NewSize=512m -XX:MaxNewSize=2048m -XX:+DisableExplicitGC -XX:+AggressiveOpts -XX:+UseBiasedLocking -XX:MaxTenuringThreshold=31 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -Djava.awt.headless=true"

 

專案

參考值

說明

-server

Tomcat以server模式執行,將擁有更大、更高的併發處理能力,更快更強捷的JVM垃圾回收機制,可以獲得更多的負載與吞吐量,生產環境必須加上。

-Xms

4096m

推薦為可用記憶體的1/4的80%~100%,16G記憶體,配置為4G

-Xmx

4096m

-Xms –Xmx 一般的要將-Xms和-Xmx選項設定為相同堆記憶體分配 (訪問量比較大時設為一致)

-Xss

256k

指設定每個執行緒的堆疊大小 一般是128k或者256k(這個值注意默值512K,有時會出現這個過小,tomcat起不來情況。所有根據的專案設定,反正越小越好)

-Xmn

256m

一般來說, -Xmn128-256m就夠了

-XX:PermSize

256m

非堆的初始值[實體記憶體的1/64]

-XX:MaxPermSize

4096m

非堆的最大值[實體記憶體的1/4]

-XX:NewSize

512m

 

-XX:MaxNewSize

2048m

 

-XX:+DisableExplicitGC

 

程式程式碼中不允許有顯示的呼叫”System.gc()”

-XX:+AggressiveOpts

 

啟用這個引數,則每當JDK版本升級時,你的JVM都會使用最新加入的優化技術(如果有的話)

-XX:+UseBiasedLocking

 

啟用一個優化了的執行緒鎖,我們知道在我們的

-XX:MaxTenuringThreshold

31

設定垃圾最大年齡

-XX:+UseConcMarkSweepGC

 

即CMS gc 我們知道頻頻繁的GC會造面JVM的大起大落從而影響到系統的效率,因此使用了CMS GC後可以在GC次數增多的情況下,每次GC的響應時間卻很短,比如說使用了CMS GC後經過jprofiler的觀察,GC被觸發次數非常多,而每次GC耗時僅為幾毫秒。

-XX:+CMSParallelRemarkEnabled

 

在使用UseParNewGC 的情況下, 儘量減少 mark 的時間

-XX:+UseCMSCompactAtFullCollection

 

在使用concurrent gc 的情況下, 防止 memoryfragmention, 對live object 進行整理, 使memory 碎片減少

-XX:LargePageSizeInBytes

128m

指定 Java heap的分頁頁面大小

-XX:+UseFastAccessorMethods

 

get,set方法轉成原生代碼

-XX:+UseCMSInitiatingOccupancyOnly

 

 

-Djava.awt.headless

true