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


你可能感兴趣的:(java,服务器,最大值)