下面来看一条常常设置设置jvm参数的命令(为了方便读就换行了):java
JAVA_OPTS="-server -Xms512M -Xmx512M -Xss256K -Djava.awt.headless=true -Dfile.encoding=utf-8 -XX:PermSize=64M -XX:MaxPermSize=128m"
如下两条来自:https://www.oschina.net/translate/hotspot-jvm-options-java-examplesless
1) 以-X开头的都是非标准的(这些参数并不能保证在全部的JVM上都被实现),并且若是在新版本有什么改动也不会发布通知jvm
2)以-XX开头的都是不稳定的而且不推荐在生产环境中使用。这些参数的改动也不会发布通知。spa
像我这种工做一两年的菜鸟对ms和mx这些常常傻傻分不清,我就是试图经过英文单词联系记忆这些参数.net
个人记忆方式以下:线程
1)-Xms,ms看作的memory size的缩写,就是初始堆大小code
2)Xmx , maximum memory size,x表明最大,因此就最大堆内存server
3)-Xss, ss就是stack size的缩写,因此是用来表明线程栈的大小内存
4)-Xmn,n表明是new generation(新生代),因此mn就是用来指定新生代的堆内存空间大小utf-8
5)-XX:PermSize 设置持久区的大小,在jdk 8中已经被metaspace取代
6) -XX:MaxPermSize 设置持久区最大值,在jdk 8中已经被metaspace取代