查看程序運行GC的運行情況
資源充足的GC情況
新生代
老年代
元空間
因為現在資源充足沒有發生GC
*案例:將JVM初始化內存與最大內存(防止內存抖動,反復GC)調至10m,new一個50m的數組對象,發生OOM
源碼
package com.adun.test_jvm;
/** * @author zhudunfeng * @date 2020/8/29 22:13 * * JVM參數調優: * (1)標准參數 * (2)X參數(了解): * Xint:解釋執行 * Xcomp:第一次使用就編譯成本地代碼 * Xmixed:混合模式,(先編譯再執行) * (3)XX參數 * (i)Boolean類型 * (ii)KV設值類型 * * 常用的-XX參數 * -Xms JVM初始大小內存,默認為物理內存的1/64 等價於-XX:InitialHeapSize * -Xmx JVM最大分配內存,默認為物理內存的1/4 等價於-XX:MaxHeapSize * -Xss 設置單個線程棧的大小,一般默認為512k~1024k 這里是根據Jvm所在平台來確定【查看官網Java文檔】 等價於-XX:ThreadStackSize * -Xmn 設置年輕代大小【年輕代中【伊甸區:幸存0區:幸存1區】【8:1:1】】 * -XX:MetaspaceSize 設置元空間的大小 */
public class HelloGC {
public static void main(String[] args) throws InterruptedException {
//返回Java的虛擬機中的內存信息
long totalMemory = Runtime.getRuntime().totalMemory();
//返回Java虛擬機試圖使用的最大內存量
long maxMemory = Runtime.getRuntime().maxMemory();
System.out.println("TotalMembery(Xms)=:"+totalMemory+"(字節)、"+(totalMemory/(double)1024/1024)+"MB");
System.out.println("TotalMembery(Xmx)=:"+maxMemory+"(字節)、"+(maxMemory/(double)1024/1024)+"MB");
System.out.println("*************hello java");
//作死操作,new 一個對象超過最大內存
// byte[] aByte = new byte[50*1024*1024];
// Thread.sleep(Integer.MAX_VALUE);
}
}
JVM參數配置
查看GC情況
GC參數解讀
FullGC參數解讀
規律
:
【名稱】【GC前內存占用】(->)【GC后內存占用】(該區內存總大小)
原文路徑