Tomcat 內存調優

內存方式的設置是在 catalina.sh 中,調整一下 JAVA_OPTS 變量即可,因為後
面的啟動參數會把 JAVA_OPTS 作為 JVM 的啟動參數來處理。


具體設置如下:

JAVA_OPTS="$JAVA_OPTS -Xmx3550m -Xms3550m -Xss128k -XX:NewRatio=4 -XX:SurvivorRatio=4"

其各項參數如下:-Xmx3550m:設置 JVM 最大可用內存為 3550M。

-Xms3550m:設置 JVM 促使內存為 3550m。

此值可以設置與-Xmx 相同,以避免每次垃圾回收完成後 JVM 重新分配內存。-Xmn2g:設置年輕代大小為 2G。整個堆大小=年輕代大小 + 年老代大小 +持久代大小。持久代一般固定大小為 64m,所以增大年輕代後,將會減小年老代大小。此值對系統性能影響較大, Sun 官方推薦配置為整個堆的 3/8。-Xss128k:設置每個線程的堆棧大小。 JDK5.0 以後每個線程堆棧大小為 1M,以前每個線程堆棧大小為 256K。更具應用的線程所需內存大小進行調整。在相同物理內存下,減小這個值能生成更多的線程。但是操作系統對一個進程內的線程數還是有限制的,不能無限生成,經驗值在 3000~5000 左右。-XX:NewRatio=4:設置年輕代(包括 Eden 和兩個 Survivor 區)與年老代的比
值(除去持久代)。設置為 4,則年輕代與年老代所佔比值為 1: 4,年輕代佔整個堆棧的 1/5
-XX:SurvivorRatio=4:設置年輕代中 Eden 區與 Survivor 區的大小比值。設置為 4,則兩個 Survivor 區與一個 Eden 區的比值為 2:4,一個 Survivor 區佔整個年輕代的 1/6
-XX:MaxPermSize=16m:設置持久代大小為 16m。-XX:MaxTenuringThreshold=0:設置垃圾最大年齡。如果設置為 0 的話,則年輕代對象不經過 Survivor 區,直接進入年老代。對於年老代比較多的應用,可以提高效率。如果將此值設置為一個較大值,則年輕代對象會在 Survivor 區進行多次複製,這樣可以增加對象再年輕代的存活時間,增加在年輕代即被回收的概論。



分享到:


相關文章: