通过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);

猜你喜欢

转载自blog.csdn.net/robinson_911/article/details/106057684
GC
今日推荐