Java读取图像 - java.lang.OutOfMemoryError

时间:2011-07-19 11:23:55

标签: java image out-of-memory bufferedimage heap-memory

我正在尝试使用以下代码读取10MB的Jpeg图像,但是我得到了“线程中的异常”主“java.lang.OutOfMemoryError:Java堆空间”。我想知道10MB的图像是否太大而无法读取,如果是这样我应该增加堆空间。

增加堆空间应该是最后一种选择,所以我想知道是否还有其他方法可以实现这一点。我的代码附在下面;

BufferedImage image;
    try {

         image = ImageIO.read(new File("C:/Users/Administrator/Desktop/aa.jpg"));

            printDetails(image);

        } catch (IOException e) {

        }

帮助表示赞赏。

1 个答案:

答案 0 :(得分:4)

请注意,10MB JPEG可以轻松解压缩到更多兆字节的未压缩图像数据。

假设您使用的是标准的24位色彩空间(每个色彩位为8位),图像的尺寸为10000 x 10000像素(考虑到10 MB输入大小,这不太不现实),那么您需要更多超过286MB的存储空间来存储原始的未压缩图像数据(假设开销为零)。

这远远大于Oracle客户端VM的默认最大堆大小,因此您可能需要使用the -Xmx argument来增加可用堆内存。