最快的方式来释放BufferedImage内存

时间:2013-08-01 09:19:08

标签: java memory bufferedimage

将BufferedImage保存到磁盘的最快方法是什么?(为了释放内存)?

我的Java应用程序处理大量图像(图像每隔约300毫秒加载到内存中)。大多数图像都被立即丢弃(gc),但每隔一段时间我就需要保存图像。

当然,将它们保存在RAM中并不是一个好主意,因为它会在几分钟内耗尽平均2GB的JVM,并破坏应用程序,因此我尝试将其保存到磁盘。问题是,用ImageIO.write(img, "PNG", file)保存它是不够的,因为它有时需要(在我的i7机器上)每12MB图像需要5-10秒来处理和保存,并且仍然不能足够快地释放内存。

是否有其他格式可能执行得更快?

编辑:

我不在乎在合理的水平上降低分辨率或放松图像数据。

1 个答案:

答案 0 :(得分:3)

PNG在ImageIO中声名狼借。您可以尝试获取基础读者和作者。 也许用高质量写一个JPEG。 Alternatives

无法将输入文件首先存储为文件,因此不需要使用ImageIO进行编写。

为了完整起见:如果您BufferedImage.getGraphics(),请不要忘记dispose()