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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章