1. 跟 JVM 内存相关的几个核心参数
- 限定 Java 堆内存的总大小
- -Xms:设置 Java 堆内存的刚开始的大小
- -Xmx:允许 Java 堆内存扩张到的最大大小
- 这两个参数,通常会设置成一样的大小
- 限定 Java 堆内存的新生代、老年代的大小
- -Xmn:设置新生代的大小
- 扣除新生代大小之后的剩余内存就是老年代的内存大小
- 限定 Java JVM 的永久代的总大小
- JDK1.8以前的版本
- -XX:PermSize 永久代刚开始的大小
- -XX:MaxPermSize 允许扩张到的最大大小
- JDK1.8以后的版本
- -XX:MetaspaceSize 永久代刚开始的大小
- -XX:MaxMetaspaceSize 允许扩张到的最大大小
- JDK1.8以前的版本
- 限定每个线程的 Java 虚拟机栈的内存大小
- -Xss
2. 如何在启动系统的时候设置 JVM 参数?
(1) 开发时设置 JVM 参数
在 Eclipse/IntelliJ IDEA 里开发代码时:
- 首先右击你写好的一个带 main() 方法的类,他有一个菜单栏,里面有一个“Debug as”选项,鼠标移动进入,会看到一个“Debug Configuration”选项,接着会看到下面的面板有一个“Arguments”的选项;
- 然后在“VM arguments”中输入你的 JVM 参数即可;
- -Xms 之类的参数直接后面跟上你要设置的内存大小,多少 M 即可;
- -XX:PermSize 这种格式的参数,需要跟一个“=”符号,跟上你要设置的内存大小即可;
(2) 在线上部署时
采用“java -jar”的方式启动一个 jar 包里的系统,那么就可以采用类似下面的格式:
java -Xms512M -Xmx512M -Xmn256M -Xss1M -XX:PermSize=128M -XX:MaxPermSize=128M -jar App.jar