-
堆内存
** 注:Virtual 为最小内存与最大内存之间的扩展内存。**
-Xmx
最大Heap Size,即上图的JVM Heap(包括Eden+form+to,Old Gen,不包含Perm),限制了年轻代和年老代的可分配最大值。
-Xms
初始化分配的Heap Size。
生产环境中ms一般设置成跟mx相等,因为若ms不等于mx那么在某些场景下JVM可能需要对Heap Size进行频繁的扩展和收缩,增加处理时间。
-Xmn
最大年轻代大小,即上图中的Eden+S0+S1+Virtual。
-XX:NewRatio
Old Gen/Young Gen,通过年老代和年轻代的比例和Heap Size就可以算出年老代的大小。
一般默认为8,若Heap Size为1024m,则 Young Gen=HeapSize/(NewRatio+1)=114m,Old Gen=HeapSize-NewSize=910m。
注意:-Xmn的优先级比-XX:NewRatio高,若-Xmn已指定,则Old Gen=HeapSize-Young Gen,无需再按比例计算。生产环境中一般只需指定-Xmn就足够了。
-XX:SurvivorRatio
Eden/S0,即 Eden区和S0的比例,默认为8,若Young Gen为114m,则S0=Young Gen/(SurvivorRatio+2)=11.4m;
S0==S1,S0、S1的职能是一模一样的,又叫做From space和To space,在每一次minor gc后角色会交换。
-XX:MaxPermSize
最大持久代大小,默认为64m。
-XX:PermSize
初始化持久代大小,默认为16m。
生产环境中一般设置MaxPermSize和PermSize相等,理由和HeapSize的设置一样,避免容量震荡消耗资源;
当应用引用的类比较多或者应用了一些动态类生产技术时应该加大该区的值,一般256m对服务器程序都很足够了。
-XX:NewSize
初始化年轻代大小,即上图中的Eden+S0+S1.
在只设置了Xmn不设置-XX:NewSize的情况下,NewSize等于mn。
- 线程栈
-Xss
线程堆栈大小,一般用于存放方法入口参数和返回值,以及原子类型的本地变量(即方法内部变量)。
一般可设置为128k。