java内存分配进行JVM调优

本文基础:

1、已经理解JVM内存结构,对堆内存结构有清晰的认识(Eden,s0,s1,OldGen)

2、理解通常情况下堆内存分配的使用对象(new 出来的对象,注意区分引用是存放在方法区)



理解几个常用参数:(基础设置:-XX:PrintGCDetails)

1、设置堆内存大小:-Xmx(最大堆内存) -Xms(初始对内存) -Xmn(新生代大小) 。注意:一般最大堆内存和初始堆内存大小设置相同,原因避免频繁的Minor GC

2、设置Eden和s0,s1的比例:-XX:SurvivorRatio=8,表示8:1:1(可以根据项目需要进行设置)

3、大对象直接进入老年代的设置:-XX:PretenureSizeThreshold(单位字节)

比如:-XX:PretenureSizeThreshold=3145728(表示3M)

4、设置进入老年代的年龄:-XX:MaxTenuringThreshold(年龄的增长原则:每存活过一次Minor GC,则加1)

5、进入老年代的另一个原则:Survivor空间相同年龄所有对象大小的总和大于Survivor空间的一半,年龄大于或等于该年龄对象的直接进入老年代,无需等到MaxTenuringThreshold设置的大小。

你可能感兴趣的:(java内存分配进行JVM调优)