1.设置最大堆内存:设置 -Xmx 来设置新生代和老年代的内存和,超过后会抛出内存溢出异常
2.设置最小堆内存:设置 -Xms 来设置最小堆内存,如果数值设置较小,会频繁进行minorGC 和Full GC,通常设置成 -Xmx值来减少初期GC的次数和耗时
3.设置新生代 -Xmn 用于设置新生代大小,新生代大小一般设置成整个堆空间的 1/4 到 1/3,太小容易导致频繁的MinorGC
4.设置持久代 ,-XX:PermSize 和 -XX:MaxPermSize 决定了加载的类的最大数量
5.设置线程栈,-Xss 每个线程的虚拟机栈大小,越小说明栈的调用深度越小,可能导致栈溢出,越大说明调用深度越大,但占用内存越大、减少局部变量可以增加深度。通常设置为-Xss:128k
6.堆的比例分配,-XX:SurvivorRatio=4 用来设置新生代中,eden空间和两个Survior区的比例关系,s0大小和s1大小相同 ,-XX:SurvivorRatio,eden : s0+s1 = 8:2 ,即s0和s1各占新生代的1/10。
7.设置老年代于新生代比例:-XX:NewRatio=4 , 老年代 : 新生代 = 4:1,新生代占这个堆的1/5。
整体示意图:
JVM参数示意图