Когда возможно, Вы не должны хранить все содержание файла, который будет подаваться в памяти. Вместо этого aquire InputStream для данных и копия данные к Сервлету OutputStream в частях. Например:
ServletOutputStream out = response.getOutputStream();
InputStream in = [ code to get source input stream ];
String mimeType = [ code to get mimetype of data to be served ];
byte[] bytes = new byte[FILEBUFFERSIZE];
int bytesRead;
response.setContentType(mimeType);
while ((bytesRead = in.read(bytes)) != -1) {
out.write(bytes, 0, bytesRead);
}
// do the following in a finally block:
in.close();
out.close();
я действительно соглашаюсь с toby, необходимо вместо этого "указать на них на S3 url".
Что касается исключения OOM, действительно ли Вы уверены, что оно имеет отношение к обслуживанию данных изображения? Скажем, Ваша JVM имеет 256 МБ "дополнительной" памяти для использования для обслуживания данных изображения. Со справкой Google, "256 МБ / 200 КБ" = 1310. Для "дополнительной" памяти на 2 ГБ (в эти дни очень разумная сумма) могли поддерживаться более чем 10 000 одновременных клиентов. Несмотря на это, 1 300 одновременных клиентов довольно большое количество. Действительно ли это - тип загрузки, которую Вы испытали? В противном случае Вы, возможно, должны в другом месте искать причину исключения OOM.
Редактирование - Относительно:
В этом варианте использования изображения могут содержать уязвимые данные...
, Когда я прочитал документацию S3 несколько недель назад, я заметил, что можно генерировать истекающие время ключи, которые могут быть присоединены к URL S3. Так, Вы не должны были бы открывать файлы на S3 общественности. Мое понимание техники:
Как упоминалось в этой ошибке , плагин Checkstyle версии 5.0.0.200906281855:
Примечания к выпуску Checkstyle 5 заявляют, что некоторые из используемых нами модулей и проверок не имеют обратной совместимости.
Например, модульTabCharacter
больше не встречается в v5 (был заменен наFileTabCharacter
), поэтому не может работать.
ПроверкаFileLength
не требует синтаксического дерева, поэтому больше не находится в родительскомTreeWalker
.
Это означает, что ваша проблема могла быть связана с автоматическим обновлением плагина Checkstyle в вашем конфигурация затмения.