将BufferedImage保存到磁盘的最快方法是什么?(为了释放内存)?
我的Java应用程序处理大量图像(图像每隔约300毫秒加载到内存中)。大多数图像都被立即丢弃(gc),但每隔一段时间我就需要保存图像。
当然,将它们保存在RAM中并不是一个好主意,因为它会在几分钟内耗尽平均2GB的JVM,并破坏应用程序,因此我尝试将其保存到磁盘。问题是,用ImageIO.write(img, "PNG", file)
保存它是不够的,因为它有时需要(在我的i7机器上)每12MB图像需要5-10秒来处理和保存,并且仍然不能足够快地释放内存。
是否有其他格式可能执行得更快?
我不在乎在合理的水平上降低分辨率或放松图像数据。
答案 0 :(得分:3)
PNG在ImageIO中声名狼借。您可以尝试获取基础读者和作者。 也许用高质量写一个JPEG。 Alternatives
无法将输入文件首先存储为文件,因此不需要使用ImageIO进行编写。
为了完整起见:如果您BufferedImage.getGraphics()
,请不要忘记dispose()
。