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左右。
线程栈的大小是个双刃剑,如果设置过小,可能会出现栈溢出,特别是在该线程内有递归、大的循环时出现溢出的可能性更大,如果该值设置过大,就有影响到创建栈的数量,如果是多线程的应用,就会出现内存溢出的错误.

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