tomcat jvm調優

JVM調優總結


堆(Heap)內存和非堆(Non-heap)內存

堆內存就是Java代碼的,留給開發人員使用;

非堆內存是留給JVM自己使用的(方法區、JVM內部處理或優化所需要的內存、每個類結構以及方法和構造方法的代碼)


Xms:JVM初始內存 默認是物理內存的1/64

Xmx:JVM最大可用內存,默認是物理內存的1/4

Xmn:設置年輕帶大小

Xss:設置每個線程的堆棧大小

默認空餘堆內存小於40%時,對內存會增大到Xmx的最大值;空餘堆內存大於70%時,會減小到Xmx的最小值。

因此,服務器一般設置Xms和Xmx相等,來避免每次GC後調整堆的大小。


XX:PermSize  JVM初始分配的非堆內存,默認是物理內存的1/64

XX:MaxPermSize JVM最大非堆內存,默認是物理內存的1/4


如果Xmx設置的值過小或不設置,可能會導致java.lang.OutOfMemory

如果XX:MaxPermSize設置過小,可能會導致java.lang.OutOfMemoryError:PermGen space內存溢出


設置方法:

在tomcat/bin下有catalina.sh文件,位置在cygwin=false之前

# OS specific support.  $var _must_ be set to either true or false.

cygwin=false

比如,在上面兩行之間加入如下內容

配置一:JAVA_OPTS="-Xms=3800m -Xmx=3800m -Xmn=2g -Xss=128k -XX:PermSize=1900m -XX:PermSize=3800m"

配置二:JAVA_OPTS="-Xms256m -Xmx512m -Xss1024K -XX:PermSize=128m -XX:MaxPermSize=256m"


注意:Xmx和PermSize之和不可超過不可超過JVM可以獲得的總內存

PermSize不可大於Xmx



參考文檔

http://elf8848.iteye.com/blog/467460

http://www.cnblogs.com/mingforyou/archive/2012/03/03/2378143.html


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