1、名词解释
Xm:Extended Memory。
-Xms:minimum memory size for pile and heap。
-Xmx:maximum memory size for pile and heap。
PermGen space的全称是Permanent Generation space,是指内存的永久保存区域。
2、参数设置
-Xms:JVM初始分配的堆内存,默认是物理内存的1/64。
-Xmx:JVM最大允许分配的堆内存,默认是物理内存的1/4。
-XX:MaxNewSize:JVM最大允许分配的新生代堆内存。
-XX:PermSize:JVM初始分配的非堆内存,默认是物理内存的1/64。
-XX:MaxPermSize:JVM最大允许分配的非堆内存,默认是物理内存的1/4。
3、常识问题
JVM主要管理两种类型的内存:堆和非堆。简单来说堆就是Java代码可及的内存,是留给开发人员使用的;非堆就是JVM留给自己用的。
服务器一般设置-Xms、-Xmx 相等以避免在每次GC后调整堆的大小。
-Xmx设置过小会导致java.lang.OutOfMemory错误。
XX:MaxPermSize设置过小会导致java.lang.OutOfMemoryError: PermGen space错误。
程序无法启动的原因分析:
(1)参数中-Xms的值大于-Xmx,或者-XX:PermSize的值大于-XX:MaxPermSize。
(2)-Xmx的值和-XX:MaxPermSize的总和超过了JVM内存的最大限制,比如当前操作系统最大内存限制,或者实际的物理内存。