GC調優-XX:PrintGCDetails深度解析


查看程序運行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后內存占用】(該區內存總大小)
原文路徑


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM