1. 程式人生 > >JVM堆記憶體引數優化,讓效能飛起來

JVM堆記憶體引數優化,讓效能飛起來

JVM堆記憶體引數優化,讓效能飛起來

堆記憶體是Java程序的重要組成部分,幾乎所有與應用相關的記憶體空間都和堆有關。現在主要介紹與堆記憶體相關的引數設定,這些引數對Java虛擬機器中非常重要的,也是對程式效能有著重要的影響。讓你徹底脫離OOM記憶體溢位等等帶來的程式崩潰。

1、 -Xms 初始堆記憶體大小,當Java程序啟動時,虛擬機器會分配一塊初始堆空間,可以使用-Xms指定這塊空間大小。在實際工作中,我們一般把-Xms-Xmx的值設定為相等,這樣的好處是在程式執行時減少GC的次數,從而提高程式效能。

2、 -Xmx 當程式在執行時,堆初始空間消耗殆盡,虛擬機器會對堆空間進行擴充套件,其擴充套件上限是最大堆空間,使用

-Xmx引數來指定。(方便大家好記住,這裡mx可以暫時理解為max最大)

3、-Xmn  此引數是用來指定新生代的大小(堆記憶體是分為新生代, 老年代,永久帶-jdk1.8後移除此屬性),新生代分為Edenfromto空間。設定一個較大新生代會降低老年代的大小,這個引數設定對系統性能已經GC行為有極大的影響。 新生代一般設定為堆記憶體的1/3-1/4左右。

4、-XX:SurvivorRatio 用來設定新生代中Eden空間和from/to空間的比例關係,表示式如下:-XX:SurvivorRatio=eden/from=eden/to

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

示意圖如下: