-Xms: JVM初始化内存大小,默认是物理内存的1/64
-Xmx:JVM最大内存大小,默认是物理内存的1/4。(一般都把这2个值设置成一样的,防止每次GC后改变堆的大小)。
-XX:permSize: 非堆内存大小(方法区),默认是物理内存的1/64
-XX:MaxPermSize: 非堆内存最大大小(方法区),默认是物理内存的1/4
-XX:NewSize: 新生代大小
-XX:MaxNewSize: 新生代最大大小
说明:
1.如果-Xmx 不指定或者指定偏小,应用可能会导致java.lang.OutOfMemory错误,此错误来自JVM,不是Throwable的,无法用try...catch捕捉。
2.XX:MaxPermSize设置过小会导致java.lang.OutOfMemoryError: PermGen space 就是内存溢出。
原因: (1)这一部分内存用于存放Class和Meta的信息,Class在被 Load的时候被放入PermGen space区域,它和存放 Instance的Heap区域不同。
(2)GC(Garbage Collection)不会在主程序运行期对PermGen space进行清理,所以如果你的APP会LOAD很多CLASS 的话,就很可能出现PermGen space错误。
这种错误常见在web服务器对JSP进行pre compile的时候。