![](/img/trans.png)
[英]java.lang.OutOfMemoryError: Java heap space while reading Excel file into java bean using XLSReader
[英]Reading images using ImageIO.read(file); causes java.lang.OutOfMemoryError: Java heap space
我正在使用ImageIO API編寫PNG文件。 在循環中調用此代碼,並導致OutOfMemory錯誤。 無論如何,可以固定以下代碼來避免OutOfMemory錯誤嗎? 還是增加JVM堆大小的唯一選擇?
File file = new File(resultMap.get("outputFile").toString());
//ImageIO to convert jpg to png
BufferedImage img = ImageIO.read(file);
file = new File(resultMap.get("outputFile").toString() + ".png");
ImageIO.write(img, "png", file);
Java堆大小為1024M。
我遇到了類似的問題,我必須讀取36張圖像,將它們裁剪並保存到一個新文件中(一次一個)。 我發現必須在每次迭代后將圖像設置為null,以允許Java進行垃圾回收。 即:
BufferedImage img;
for (int i=0; i<36; i++) {
img = ImageIo.ImageIO.read(anImageFile);
/* Do what's needed with the image (cropping, resizing etc.) */
ImageIO.write(img, "jpg", outputFile);
img.flush();
img = null;
}
我知道這是一個舊帖子,但我希望它將來能對某人有所幫助。
為什么不嘗試在BufferedImage
上調用flush(
)。 它釋放了一些持有的資源。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.