java.lang.OutOfMemoryError: пространство кучи Java, когда я пытался создать BufferedImage

1

У меня проблема при создании BufferedImage. У меня есть эта проблема только на сервере, который я арендовал, а не на моей среде разработки (мой компьютер).

У меня есть форма для загрузки изображения. После загрузки изображения я сохраняю его в файловой системе. Я сохраняю его немедленно, потому что, по словам некоторых из вас, я могу "освободить" ресурсы из памяти сервера, так как я использую изображение в своей файловой системе, а не объект Part чтобы изменить размер изображения, элементы управления и т.д. я необходимость.

Как только я попытаюсь создать BufferedImage, с изображения размером более 2-3 мб, я получаю эту ошибку.

При выполнении этой строки мое приложение перестает работать, и я получаю эту ошибку

BufferedImage immagineTemporaneaBufferizzata = ImageIO.read(new File...);

Я использовал метод, найденный в Интернете, чтобы проверить память на сервере. Это то, что я получаю перед встречей с ошибкой:

Память: 26 Свободная память: 30 Суммарная память: 57 Максимальная память: 57

Должен ли я увеличить память кучи? Я попытался сделать это как на catalina.bat, так и на catalina.sh, но я не видел изменений в моей Max Memory. Вероятно, я сделал что-то не так. Какой правильный способ увеличить размер кучи на linux?

Показать ещё 2 комментария
Теги:
servlets
tomcat
jvm
heap-memory

1 ответ

1
Лучший ответ

Макс. Память 57 МБ, откровенно говоря, довольно низкая для приложений Java, обрабатывающих изображения с объемом 2-3 МБ. Да, вы должны обязательно увеличить память, если сможете.

Чтобы уточнить: размер изображения 2-3 МБ. Что это за 2-3 МБ? Размер сжатого изображения? Если это JPG с 2-3 МБ, это может быть чертовски большое изображение (в зависимости от качества). Например, это может быть образ 3200x2000 пикселей, который составляет 6,4 миллиона пикселей, и с 3-байтной моделью RGB-пикселя в памяти будет ~ 20 МБ двоичных данных.

Об увеличении памяти tomcat см. Следующие вопросы:

Работа с ошибкой "java.lang.OutOfMemoryError: PermGen space"

Увеличьте настройки памяти Tomcat

  • 0
    Спасибо за ваше объяснение. Я не знаком с изменением размера изображения, и я не знал, что действительно происходит, когда я изменяю размер изображения. Я проверяю изображение, которое я загружал. это 4896x1890; это означает, что, согласно тому, что вы сказали, мой сайт обрабатывает двоичный поток размером 27 МБ. Теперь мне интересно, как крупные сайты, такие как Facebook, могут одновременно загружать тысячи фотографий.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню