首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

IcePDF 轉圖片專案中 OOM:單次處理釋放資源 vs 批次處理累積

     編輯:程式設計綜合問答

用 IcePDF `Document.getPageImage` 轉 PDF 頁面為圖片,`main` 測試正常,放入專案批次處理就 `OutOfMemoryError`。

原因

專案中循環處理多個 PDF / 多頁,**`Document` 物件未及時 `dispose()`**、**`BufferedImage` 佔用大量堆記憶體未釋放**、**`ImageWriter` 輸出流未關閉**,導致記憶體洩漏累積。

修正要點

  1. **單頁處理完立即釋放**:
    
    Document doc = new Document();
    doc.setFile(pdfPath);
    for (int i=0; i
  2. **不要在循環外保留 `Document` 或 `BufferedImage` 參考**。
  3. **調大 JVM 堆**:`-Xmx2g -Xms2g`。
  4. **考慮 PDFBox / Apache PDFRenderer** 記憶體管理更佳。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved