JVM系列-GC日志分析-堆空间大小分布

最近接触生产环境的spark任务,有很多GC问题,需要调优,平时没用过,抽空系统的学习下,特此记录,忘指教

触发GC的代码

public class HelloGC {
    public static void main(String[] args) {
        System.out.println("HelloGC!");
        List list = new LinkedList();
        try{
            for(;;) {
                byte[] b = new byte[1024*1024];// 1024 *1024 Byte =>> 1 MB
                list.add(b);
                System.out.println(list.size());
            }
        }catch (Exception e){
            System.out.println("hello end");
        }
    }
}

控制台

在这里插入图片描述

jvm 的一些参数

输出时间
-XX:+PrintGCDateStamps -XX:+PrintGCDetails

参数总结
-XX:+PrintGC 输出GC日志
-XX:+PrintGCDetails 输出GC的详细日志
-XX:+PrintGCTimeStamps 输出GC的时间戳(以基准时间的形式)
-XX:+PrintGCDateStamps 输出GC的时间戳(以日期的形式,如 2013-05-04T21:53:59.234+0800)
-XX:+PrintHeapAtGC 在进行GC的前后打印出堆的信息
-Xloggc:…/logs/gc.log 日志文件的输出路径
-Xmn10M 新生代
-XX:MaxNewSize=10M
-XX:+PrintCommandLineFlags 打印HotSpotVM 采用的自动优化参数

-Xms70M -Xmx70M -XX:NewSize=30M -XX:SurvivorRatio=4 -XX:+PrintCommandLineFlags -XX:+PrintGC -Xloggc:E:/it/java/jvm/output/MainDate.log -XX:+PrintGCDateStamps -XX:+PrintGCDetails

GC日志

SurvivorRatio

设置年轻代中Eden区与Survivor区的比值

SurvivorRatio=8

-Xms20M -Xmx20M -Xmn10M -verbose:gc -XX:+PrintGCDetails -XX:SurvivorRatio=8在这里插入图片描述

SurvivorRatio=4

-Xms70M -Xmx70M -XX:NewSize=30M -XX:SurvivorRatio=4
-XX:NewSize=31457280
-XX:SurvivorRatio=4
堆空间总共70MB=71680KB=73400320B
年轻代 -XX:NewSize=30M=30720K=
老年代=70-30=40M=40960K
在这里插入图片描述

如何分析GC日志

规律
[名称:gc前内存占用-> gc后内存占用(该区内存总大小)]
GC日志中的PSYoungGen(PS是指Parallel Scavenge)为Eden+FromSpace,而整个YoungGeneration为Eden+FromSpace+ToSpace。

其他分析工具(未完待续)

参考

https://blog.csdn.net/xiaocai9999/article/details/88368395?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.control

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值