1. 程式人生 > >jvm參數總結

jvm參數總結

-- name network wsize UC www. 新生代 參數類型 xmx

之前一直對jvm參數都是現學現用,對有些地方沒有總結,比如-XX 和 -X有什麽區別,無意中看到oracle的官網對於jvm參數的介紹,下面做個簡單的總結和翻譯。

首先獻上oracle官方鏈接:

  1. http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html
  2. https://docs.oracle.com/javase/8/docs/technotes/tools/unix/java.html

1 jvm參數類型

1.1 標準參數(保證在所有的jvm上都實現)

不是以-X和-XX開頭的參數屬於標準參數,例如-Dproperty=value -jar filename -client 等

1.2 非標準參數(不保證在所有的jvm上都實現)

非標準參數分為以-X開頭的和以-XX開頭的

  • 以-X開頭的參數是非標準參數,有可能不在release note中通知就改變
  • 以-XX開頭的參數是不穩定的,可能不通知就改變

非標準參數

  • 對於boolean類型,-XX:+<選項> 表示打開選項;--XX:-<選項> 表示關閉掉選項
  • 對於數值類型,可用-XX:<選項>=<值> 表示;值默認單位是字節,也可用單位有‘k’或者‘K’、‘m’或者‘M’、‘g’或者‘G’,例如32k表示32768
  • 對於String類型,可用-XX:<選項>=<值>,通常用來指定一個文件、路徑或者命令

對於一些參數的默認值可用參考上面列出的oracle的官網

2 常用參數

參數 說明 備註
-Dproperty=value 設置系統變量,等號兩邊沒有空格,如果value有空格的話,需要用雙 引號括起來
-X 顯示所有的-X 選項
-Xmssize 設置堆的最小值 值必須是1024的倍數並且大於1M
-Xmxsize 設置堆最大值 值必須值1024的倍數並且大於2M,一般情況下-Xmx和-Xms設置為一樣大的值,和-XX:MaxHeapSize=size 意義相同
-Xxssize 設置線程棧大小 默認值和jvm所在的平臺有關系,該選項和-XX:ThreadStackSize 意義相同
-XX:NewRatio=ratio 設置新生代和老年代的比例,默認大小比例是2
-Xmnsize 設置年輕代大小,最大值和最小值都是size 值默認單位是字節,也可用單位有‘k’或者‘K’、‘m’或者‘M’、‘g’或者‘G’ 例如-Xmn256m
-XX:NewSize=size 設置新生代初始大小
-XX:MaxNewSize=size 設置新生代最大值

3 其他

-Xmnsize、-XX:NewRatio=ratio、-XX:NewSize=size/-XX:MaxNewSize=size 三個參數都會影響年輕代的大小,那麽在混合使用的情況下,優先級是什麽呢?

  1. 最高優先級 -XX:NewSize=size/-XX:MaxNewSize=size
  2. 中優先級:-Xmnsize(-Xmnsize 等效 -XX:NewSize=size -XX:MaxNewSize=size)
  3. 低優先級: -XX:NewRatio=ratio

推薦使用-Xmnsize參數,原因是這個參數簡潔,相當於一次設定-XX:NewSize=size/-XX:MaxNewSize=size,而且兩者相等,適用於生產環境。-Xmnsize 配合 -Xmssize/-Xmxsize,即可將堆內存布局完成

4 參考

http://www.jiucaiyuan.net/m/?post=56
http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html
https://docs.oracle.com/javase/8/docs/technotes/tools/unix/java.html

jvm參數總結