jvm參數總結
阿新 • • 發佈:2018-04-06
-- name network wsize UC www. 新生代 參數類型 xmx
之前一直對jvm參數都是現學現用,對有些地方沒有總結,比如-XX 和 -X有什麽區別,無意中看到oracle的官網對於jvm參數的介紹,下面做個簡單的總結和翻譯。
首先獻上oracle官方鏈接:
- http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html
- 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 三個參數都會影響年輕代的大小,那麽在混合使用的情況下,優先級是什麽呢?
- 最高優先級 -XX:NewSize=size/-XX:MaxNewSize=size
- 中優先級:-Xmnsize(-Xmnsize 等效 -XX:NewSize=size -XX:MaxNewSize=size)
- 低優先級: -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參數總結