上一篇说到了
我们创建的对象都是优先分配在新生代的
当一个方法执行完毕之后,没人引用的对象,就成为了垃圾
对于 通过 static 静态变量引用的 对象会长期存活
当新生代的空间满了之后,会触发垃圾回收机制
对于躲过垃圾回收的对象,会对它的年龄 +1
当年龄达到 15 岁之后
会进入老年代
老年代也会进行垃圾回收
JVM核心参数
-Xms:Java堆内存的大小
-Xmx:Java堆内存的最大大小
-Xmn:Java堆内存中的新生代大小,扣除新生代剩下的就是老年代的内存大小了
-XX:PermSize:永久代大小
-XX:MaxPermSize:永久代最大大小
-Xss:每个线程的栈内存大小
如何在启动的时候设置JVM参数
你要是在Eclipse/IntelliJ IDEA里开发代码的话,如果要在这种开发IDE里启动一个程序,然后设置JVM参数,那么就需要对按照下面的步骤来设置:
首先右击你写好的一个带main()方法的类,他有一个菜单栏,里面有一个“Debug as”选项,鼠标移动进入,会看到一个“Debug Configuration”选项,接着会看到下面的面板。
这个面板里有一个“Arguments”的选项,点击他,会看到下面的图。然后在“VM arguments”中输入你的JVM参数即可
比如你可以按照下面的示例来设置,-Xms之类的参数直接后面跟上你要设置的内存大小,多少M即可。
但是-XX:PermSize这种格式的参数,需要跟一个“=”符号,跟上你要设置的内存大小即可。
那么如果是在线上部署系统应该如何设置JVM参数呢?
其实都很简单,比如说采用“java -jar”的方式启动一个jar包里的系统,那么就可以采用类似下面的格式:
java -Xms512M -Xmx512M -Xmn256M -Xss1M -XX:PermSize=128M -XX:MaxPermSize=128M -jar App.jar