Java, читающая изображение - java.lang.OutOfMemoryError - PullRequest
0 голосов
/ 19 июля 2011

Существует изображение размером 10 МБ в формате JPEG, которое я пытаюсь прочитать, используя следующий код, но я получаю "Исключение в потоке" main "java.lang.OutOfMemoryError: Пространство кучи Java".Интересно, если изображение размером 10 МБ слишком велико, чтобы его можно было прочитать, если я увеличу пространство кучи, если это так.

Увеличение пространства кучи должно быть последней альтернативой, поэтому мне интересно, есть ли другой способ, которым я мог бы добиться этого.Мой код прилагается ниже;

BufferedImage image;
    try {

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

            printDetails(image);

        } catch (IOException e) {

        }

Помощь оценена.

1 Ответ

4 голосов
/ 19 июля 2011

Обратите внимание, что JPEG размером 10 МБ можно легко распаковать во многие мегабайты несжатых данных изображения.

Если вы используете стандартное 24-битное цветовое пространство (8 бит для RGB каждое) и размер изображения составляет 10000 x 10000 пикселей (что не слишком нереально, учитывая размер входного файла 10 МБ), тогда вам потребуется больше чем 286 МБ памяти для хранения необработанных, несжатых данных изображения (и это при условии отсутствия затрат).

Это значительно больше, чем максимальный размер кучи по умолчанию для клиентской виртуальной машины Oracle, поэтому есть вероятность, что вам потребуется увеличить доступную память кучи, используя аргумент -Xmx .

...