powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / StringBuffer & OutOfMemoryError
1 сообщений из 1, страница 1 из 1
StringBuffer & OutOfMemoryError
    #34433437
JIRO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет всем,

Есть код, который читает большие UTF строки:


public static String readUTFSafely(DataInputStream inputStream) throws IOException
{
int blocksAmount = inputStream.readInt();
StringBuffer buffer = new StringBuffer(blocksAmount * BLOCK_SIZE);


for (int i = 0; i < blocksAmount; ++i)
{
buffer.append(inputStream.readUTF());
}
return buffer.toString();
}

При определенных ситуациях этот код выбрасывает OutOfMemoryError. Как я понимаю, из-за того, что StringBuffer не может выделить достаточно памяти.
Когда в виртуальную машину передаётся параметр -Xmx256M, тогда этих сложностей не возникает.

Такой вот код таких проблем не создаёт


public static String readUTFSafely(DataInputStream inputStream) throws IOException
{
int blocksAmount = inputStream.readInt();

String result = "";
for (int i = 0; i < blocksAmount; ++i)
{
result += inputStream.readUTF();
}
return result;
}


Насколько я знаю, String всё время перераспределяет память, что влияет на время выполнения. А параметр -Xmx задавать не хочется. В чём загвоздка и как решить этот вопрос?
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / StringBuffer & OutOfMemoryError
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]