配置Tomcat启动JVM时分配的内存
JVM内存分配默认情况说明
JAVA_OPTS="-server -Xms2048m -Xmx2048m -XX:PermSize=128M -XX:MaxPermSize=128m"
JVM内存配置参数 | 描述 |
---|---|
-Xmx | Java Heap最大值,默认值为物理内存的1/4; |
-Xms | Java Heap初始值,Server端JVM最好将-Xms和-Xmx设为相同值,开发测试机JVM可以保留默认值; |
-Xmn | Java Heap Young区大小,不熟悉最好保留默认值; |
-XX:PermSize | 设定内存的永久保存区域; |
-XX:MaxPermSize | 设定最大内存的永久保存区域; |
-XX:NewSize | 设置JVM堆的新生代 的默认大小; |
-XX:MaxNewSize | 设置JVM堆的新生代 的最大大小; |
-Xss | 每个线程的Stack大小,不熟悉最好保留默认值; |
JVM堆内存分配
-Xms
约定了JVM启动是初始化分配物理内存,默认为物理内存的1/64; -Xmx
约定了JVM运行时最大分配的物理内存,默认是物理内存的1/4;
在JVM运行时,当JVM空闲堆内存大于自身占用内存的70%时,JVM就会自动释放对内存一直达到-Xms
约定的最小值,JVM调整自身堆内存时通常是在GC后发生。
内存优化
- 所以我们可以手动去设置-Xms
与-Xmx
相等,避免在每次GC 后调整堆的大小。
- 建议堆内存的最大值设置-Xmx
为可用内存的最大值的80%。
内存溢出
- -Xms
<-Xmx
时,JVM启动失败;
- -Xmx
> 可用物理内存时,JVM启动失败;
- 应用程序在启动和运行时所使用的内存超出-Xmx
时,JVM发生内存溢出( OutOfMemoryError: Java heap space)