JVM 常用基本配置參數有哪些

🍀基礎知識

在這裏插入圖片描述

long totalMemory = Runtime.getRuntime().totalMemory();  // 返回 Java 虛擬機中的內存總量
long maxMemory = Runtime.getRuntime().maxMemory();  // 返回 Java 虛擬機視圖使用的最大內存量
System.out.println("TOTAL_MEMORY(-Xms) = " + totalMemory + "(字節)、" + (totalMemory / (double) 1024 * 1024) + "MB");
System.out.println("MAX_MEMORY(-Xmx) = " + maxMemory + "(字節)、" + (maxMemory / (double) 1024 * 1024) + "MB");

🍀常用參數

📌 -Xms

初始大小內存,默認爲物理內存 1/64    等價於 -XX:InitialHeapSize

📌 -Xmx

最大分配內存,默認爲物理內存 1/4    等價於 -XX:MaxHeapSize

📌 -Xss

設置單個線程棧的大小,一般默認爲 512k~1024k    等價於 -XX:ThreadStackSize

📌 -Xmn

設置年輕代大小

📌 -XX:MetaspaceSize

設置元空間大小
-Xms10m -Xmx10m -XX:MetaspaceSize=1024m -XX:+PrintFlagsFinal

📌 典型設置案例

-Xms128m -Xmx2048m -Xss1024k 
-XX:MetaspaceSize=512m 
-XX:+PrintCommandLineFlags 
-XX:+PrintGCDetails 
-XX:+UseSerialGC

📌 -XX:+PrintGCDetails

⏳ 輸出詳細的 GC 收集日誌信息
⏳ GC 信息解讀

在這裏插入圖片描述

⏳ FullGC 信息解讀

在這裏插入圖片描述

📌 -XX:SurvivorRatio

默認情況
Eden:S0:S1 = 8:1:1
-XX:+PrintGCDetails -XX:+UseSerialGC -Xms10m -Xmx10m -XX:SurvivorRatio=8
在這裏插入圖片描述
Eden:S0:S1 = 4:1:1
-XX:+PrintGCDetails -XX:+UseSerialGC -Xms10m -Xmx10m -XX:SurvivorRatio=4
在這裏插入圖片描述

📌 -XX:NewRatio

默認情況
-Xms10m -Xmx10m -XX:+PrintGCDetails -XX:+UseSerialGC -XX:NewRatio=2
在這裏插入圖片描述
修改
-Xms10m -Xmx10m -XX:+PrintGCDetails -XX:+UseSerialGC -XX:NewRatio=4
在這裏插入圖片描述

📌 -XX:MaxTenuringThreshold

查看默認進入老年代年齡:
在這裏插入圖片描述
-XX:MaxTenuringThreshold=0:設置垃圾最大年齡。如果設置爲0的話,則年輕代對象不經過 Survivor 區,直接進入老年代。對於年老代比較多的應用,可以提高效率。如果將此值設置爲一個較大值,則年輕代對象會在 Survivor 區進行多次複製,這樣可以增加對象在年輕代的存活時間,增加在年輕代即被回收的概率。

========================================================
jinfo -flag MaxTenuringThreshold 15120

jinfo -flag PrintGCDetails 15120

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章