通过GC日志查调用GC的代码

线上反馈GC比较频繁。然后我们通过GC.log来锁定GC代码。

1.   打印GC日志文件到磁盘:

-XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/logs/gc.log

2. 查看GC日志:cat  gc.log

锁定发生GC的时间:“2020-05-11T16:42:02”

然后在日志文件中查找这个时间左右的接口调用日志:

可以看出是导出订单列表接口,触发了GC。

然后通过查看导出Excle代码发现,这里使用第三方库(org.apache.poi)的Excle导出时,触发了GC。

workbook.close();底层代码中调用了

if (!workbookSettings.getGCDisabled())
    {
      System.gc();  // 触发了GC
    }

解决办法,关闭GC,如下:

WorkbookSettings settings = new WorkbookSettings();
settings.setGCDisabled(true); // 关闭GC
WritableWorkbook workbook = Workbook.createWorkbook(os, settings);
WritableSheet sheet = workbook.createSheet("Sheet1", 0);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值