我正在使用ImageIO API編寫PNG文件。此代碼在循環中調用並導致OutOfMemory錯誤。無論如何,下面的代碼可以修復以避免OutOfMemory錯誤?或者是增加JVM堆大小的唯一選擇?使用ImageIO.read(文件)讀取圖像;導致java.lang.OutOfMemoryError:Java堆空間
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。
您目前在服務器上的內存設置是什麼?您正在處理的圖像的大小/數量是多少? – Manish
你的堆設置(-Xmx)有多大?你閱讀的圖像有多大? BufferedImage是一個完全未壓縮的圖像,所以即使是一張小的2MB圖像,在完全解壓縮時也可佔用45MB的內存。這樣做的循環,我可以很容易地看到你是如何吹滅你的記憶。 – chubbsondubs
@chubbard圖像爲1MB或更少。什麼是BufferedImage的替代方法? – arjunurs