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參數配置 內存大小設置


分享到:


相關文章: