前言
通过我前面的文章可以得知JVM调优就是为了减少full GC的产生次数,所以为了不使其产生就需要根据业务场景合理的设置堆内存各个区域的大小,下面我来说一下怎么设置堆内存各个区域的大小。
操作
找到eclipse.ini文件,如下图:
用Notepat++或者记事本打开eclipse.ini文件,文件内容如下图:
其中:-Xms:是最小堆内存大小,也是初始堆内存大小,因为堆内存大小可以根据使用情况进行扩容,所以初始值最小,随着扩容慢慢变大。
-Xmx:是最大堆内存大小,随着堆内存的使用率越来越高,堆内存的大小会趋向于最大内存大小扩容。
-Xmn128m(图上未设置该参数):是年轻代大小。
-XX:SurvivorRatio=3(图上未设置该参数):该参数是年轻代Eden区与Survivor区其中一个分区的比例(s0区或者s1区)的比例,如果将参数设置为3,那么会将整个堆内存分为5份,Eden区占3份,Survivoer区中s0与s1各占1份。
完整参数详解
-Xms1024m -Xmx1024m -Xmn256m -XX:SurvivorRatio=2
(该参数意思为堆内存初始值为1024m、最大值为1024m、年轻代为256m、其中年轻代的Eden区为512m、而Survivor区中的s0与s1分别为256m)
提示
1、为了避免频繁扩容,所以我们一般将-Xms与-Xmx设置为一样大小。
2、如果上述文章中有些名词不理解什么含义可以先看我之前的文章《JVM堆内存模型概括》和《java垃圾回收机制概括》、本人以最精简的文字来解释其中的含义、希望大家可以在最短的时间内学到更多的精华。