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