1. 檢視
-XX:+PrintFlagsFinal
-
檢視堆的預設值,使用下面的程式碼。
其中 InitialHeapSize 為最開始的堆的大小,MaxHeapSize 為堆的最大值。$ java -XX:+PrintFlagsFinal -version | grep HeapSize uintx ErgoHeapSizeLimit = 0 {product} uintx HeapSizePerGCThread = 87241520 {product} uintx InitialHeapSize := 134217728 {product} uintx LargePageHeapSizeThreshold = 134217728 {product} uintx MaxHeapSize := 2147483648 {product} java version "1.8.0_25" Java(TM) SE Runtime Environment (build 1.8.0_25-b17) Java HotSpot(TM) 64-Bit Server VM (build 25.25-b02, mixed mode) 複製程式碼
-
檢視棧的預設值, 其中 ThreadStackSize 為棧記憶體的大小。
$ java -XX:+PrintFlagsFinal -version | grep ThreadStackSize intx CompilerThreadStackSize = 0 {pd product} intx ThreadStackSize = 1024 {pd product} intx VMThreadStackSize = 1024 {pd product} java version "1.8.0_25" Java(TM) SE Runtime Environment (build 1.8.0_25-b17) Java HotSpot(TM) 64-Bit Server VM (build 25.25-b02, mixed mode) 複製程式碼
2. 堆
-
-Xmx:初始堆的大小
-
-Xms:最大堆大小,建議這兩個引數大小保持一致,為實體記憶體的 1/4
-
-Xmn:指定新生代的大小(Eden + Survior from + Survior to)的大小,增大新生代的大小,老年代的大小將被減小,sun 官方推薦 新生代的大小:堆 = 3 : 8
-
-XX:NewSize:設定新生代大小
-
-XX:MaxNewSize:設定新生代的最大值-Xmn 相當於設同時設定 NewSize=MaxNewSize
-
-XX:NewRation:老年代:新生代 = 4,即 old:(Eden + Survivor from + Survivor to) ,則說明新生代為整個堆區的 1/5
-
-XX:SurvivorRation:設定 Eden 區和 Survivor。
預設值為8;即:Eden:Survivor=8:1 ==> Eden:Survivor from:Survivor to = 8:1:1
若值為3,即:Eden:Survivor=8:1 ==> Eden:Survivor from:Survivor to = 3:1:1
3. 方法區(非堆)
- -XX:PermSize:設定方法區大小
- -XX:MaxPermSize: 設定方法區的最大值
- 1.8 之前可以理解為 永久區(PerSize,MaxPerSize)。
- 1.8 之後使用 後設資料區 取代。(MaxMetaspaceSize)。
4. 棧
- -Xss:棧記憶體的大小