У меня проблема при создании BufferedImage. У меня есть эта проблема только на сервере, который я арендовал, а не на моей среде разработки (мой компьютер).
У меня есть форма для загрузки изображения. После загрузки изображения я сохраняю его в файловой системе. Я сохраняю его немедленно, потому что, по словам некоторых из вас, я могу "освободить" ресурсы из памяти сервера, так как я использую изображение в своей файловой системе, а не объект Part
чтобы изменить размер изображения, элементы управления и т.д. я необходимость.
Как только я попытаюсь создать BufferedImage, с изображения размером более 2-3 мб, я получаю эту ошибку.
При выполнении этой строки мое приложение перестает работать, и я получаю эту ошибку
BufferedImage immagineTemporaneaBufferizzata = ImageIO.read(new File...);
Я использовал метод, найденный в Интернете, чтобы проверить память на сервере. Это то, что я получаю перед встречей с ошибкой:
Память: 26 Свободная память: 30 Суммарная память: 57 Максимальная память: 57
Должен ли я увеличить память кучи? Я попытался сделать это как на catalina.bat, так и на catalina.sh, но я не видел изменений в моей Max Memory
. Вероятно, я сделал что-то не так. Какой правильный способ увеличить размер кучи на linux?
Макс. Память 57 МБ, откровенно говоря, довольно низкая для приложений Java, обрабатывающих изображения с объемом 2-3 МБ. Да, вы должны обязательно увеличить память, если сможете.
Чтобы уточнить: размер изображения 2-3 МБ. Что это за 2-3 МБ? Размер сжатого изображения? Если это JPG с 2-3 МБ, это может быть чертовски большое изображение (в зависимости от качества). Например, это может быть образ 3200x2000 пикселей, который составляет 6,4 миллиона пикселей, и с 3-байтной моделью RGB-пикселя в памяти будет ~ 20 МБ двоичных данных.
Об увеличении памяти tomcat см. Следующие вопросы:
Работа с ошибкой "java.lang.OutOfMemoryError: PermGen space"