JVM参数配置 内存大小设置

JVM设置内存的参数还是不少的,比如堆内存,堆外内存,线程栈,永久代,二进制码缓存,所以在对实际应用进行调优的时候,这些参数都需要注意。如果不是太缺资源,还请在内存的使用上放宽一些,尤其是关键业务。

JVM参数配置 内存大小设置

先来点大家熟悉的

-Xmx2048m, -Xms2048m

堆内存大小,一般来情况下都会设置相同数字,一面JVM自己调来调去。再来大小控制在2G左右,最好不要炒作4G,超过4G意味着更长的GC事件,更加意味着你的应用太臃肿,是应该拆分的时候了。

-Xmn | -XX:NewSize 和-XX:MaxNewSize | -XX:NewRatio

堆内存新生代大小,JDK默认新生代占堆大小的1/3, 增大新生代能减少GC的频率,但是会加大GC的停顿时间。-Xmn等价于-XX:NewSize and -XX:MaxNewSize赋值同值。-XX:NewRatio用来设置新生代占用比例。

-XX: PermSize=128m -XX:MaxPermSize=512m (JDK7)

堆内存永久代大小,现在是个应用初始化值都会从128m开始

-XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m (JDK8)

JDK8后永生代废弃,被元空间代替。元空间允许无限使用本地内存,所以设置一个最大值很有必要。

JVM参数配置 内存大小设置

再来点不常用的

-XX:SurvivorRatio

新生代中每个存活区的大小,默认为8,要避免设置太小使得存活区放不下的临时对象直接晋升到旧生代。

-Xss

在堆之外,线程占用栈内存,默认每条线程为1M(以前是256K)。想多开点线程就设置小一点,但是线程操作一些大对象,或者递归操作就不要设置太小

-XX:MaxDirectMemorySize

堆外内存/直接内存的大小,默认为Heap区总内存减去一个Survivor区的大小

-XX:ReservedCodeCacheSize

JIT编译后二进制代码的存放区,满了之后就不再编译。JDK7默认不开多层编译48M,开了96M,而JDK8默认开多层编译240M。

JVM参数配置 内存大小设置


分享到:


相關文章: