例子
java -server -Xms512m -Xmx768m -jar springboot-app.jar
学习
根据Java虚拟机规范,JVM将内存划分为:
- New(新生代):年轻代用来存放JVM刚分配的Java对象
- Tenured(年老代):年轻代中经过垃圾回收没有回收掉的对象将被Copy到年老代
- 永久代(Perm):永久代存放Class、Method元信息
学习
- 其中 New 和 Tenured 属于堆内存,堆内存会从JVM启动参数(-Xmx)指定的内存中分配
- Perm 不属于堆内存,由虚拟机直接分配,但可以通过 -XX:PermSize -XX:MaxPermSize 等参数调整其大小。
- JVM堆中主要的空间:整个堆大小 = 新生代大小 + 年老代大小 + 永久代大小。
参数
- -Xms:初始堆大小,是指设定程序启动时占用内存大小。
- -Xmx:是指设定程序运行期间最大可占用的内存大小。
- -Xss:是指设定每个线程的堆栈大小,默认堆栈大小为1M。
- -XX:NewSize:新生代空间大小初始值。
- -XX:MaxNewSize:新生代空间大小的最大值。
- -Xmn:对-XX:newSize、-XX:MaxnewSize两个参数同时进行配置
- 年老代:年老代的空间大小会根据新生代的空间大小隐式设定。
学习
https://www.iteye.com/blog/uule-2114697
https://www.cnblogs.com/andy-zhou/p/5327288.html