JVM堆内存参数优化,让性能飞起来

Posted shoshana-kong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JVM堆内存参数优化,让性能飞起来相关的知识,希望对你有一定的参考价值。


堆内存是Java进程的重要组成部分,几乎所有与应用相关的内存空间都和堆有关。现在主要介绍与堆内存相关的参数设置,这些参数对Java虚拟机中非常重要的,也是对程序性能有着重要的影响。让你彻底脱离OOM内存溢出等等带来的程序崩溃。

1、 -Xms 初始堆内存大小,当Java进程启动时,虚拟机会分配一块初始堆空间,可以使用-Xms指定这块空间大小。在实际工作中,我们一般把-Xms与-Xmx的值设置为相等,这样的好处是在程序运行时减少GC的次数,从而提高程序性能。

2、 -Xmx 当程序在运行时,堆初始空间消耗殆尽,虚拟机会对堆空间进行扩展,其扩展上限是最大堆空间,使用-Xmx参数来指定。(方便大家好记住,这里mx可以暂时理解为max最大)

3、-Xmn  此参数是用来指定新生代的大小(堆内存是分为新生代, 老年代,永久带-在jdk1.8后移除此属性),新生代分为Eden、from、to空间。设置一个较大新生代会降低老年代的大小,这个参数设置对系统性能已经GC行为有极大的影响。 新生代一般设置为堆内存的1/3-1/4左右。

4、-XX:SurvivorRatio 用来设置新生代中Eden空间和from/to空间的比例关系,表达式如下:-XX:SurvivorRatio=eden/from=eden/to。

5、-XX:NewRatio 可以设定老年代与新生代的比例。

 

 

示意图如下:

技术图片

 

以上是关于JVM堆内存参数优化,让性能飞起来的主要内容,如果未能解决你的问题,请参考以下文章

性能测试三十六:内存溢出和JVM常见参数及JVM参数调优

性能测试三十六:内存溢出和jvm常见参数

实战JAVA虚拟机 JVM故障诊断与性能优化

JVM 堆内存,参数优化

45.JVM调优策略常见问题:内存泄漏(年老代堆空间被占满持久代被占满堆栈溢出线程堆栈满系统内存被占满)优化方法:优化目标优化GC步骤优化总结;案例分析(公司系统参数网上给的配置参数)

一个性能较好的JVM参数配置