Web部署Tomcat啓動參數參考配置

JAVA_OPTS="-Xms1024m -Xmx1024m -Xss512K -XX:PermSize=128M -XX:MaxPermSize=256m -XX:NewSize=256m -XX:MaxNewSize=512m"

-X:非標準參數


-Xms:初始Heap大小 使用中的最小內存 建議給整個堆內存的1/2
-Xmx:Heap最大值 使用中的最大內存 建議和初始Heap保持一致
-Xss:每個線程的stack大小 根據實際設置的線程數決定 一般給128k可以滿足需求
-Xmn:年輕代的heap大小,一般設置爲Xmx的1/4


-XX:非Stable參數

-XX:PermSize:JVM初始分配的非堆內存
-XX:MaxPermSize:設定最大內存的永久保存區域
-XX:NewSize:設定內存的新生區域
-XX:MaxNewSize:設定最大內存的新生區域

 

-Xss的理解

Java程序中,每個線程都有自己的Stack Space(堆棧)。這個Stack Space不是來自Heap的分配。所以Stack Space的大小不會受到-Xmx和-Xms的影響,這2個JVM參數僅僅是影響Heap的大小。
Stack Space用來做方法的遞歸調用時壓入Stack Frame(棧幀)。所以當遞歸調用太深的時候,就有可能耗盡Stack Space,爆出StackOverflow的錯誤。
-Xss128k:設置每個線程的堆棧大小。JDK5.0以後每個線程堆 棧大小爲1M,以前每個線程堆棧大小爲256K。根據應用的線程所需內存大小進行調整。在相同物理內存下,減小這個值能生成更多的線程。但是操作系統對一 個進程內的線程數還是有限制的,不能無限生成,經驗值在3000~5000左右。
線程棧的大小是個雙刃劍,如果設置過小,可能會出現棧溢出,特別是在該線程內有遞歸、大的循環時出現溢出的可能性更大,如果該值設置過大,就有影響到創建棧的數量,如果是多線程的應用,就會出現內存溢出的錯誤.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章