
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
03.04.2007, 11:41:34
|
|||
|---|---|---|---|
StringBuffer & OutOfMemoryError |
|||
|
#18+
Привет всем, Есть код, который читает большие 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 задавать не хочется. В чём загвоздка и как решить этот вопрос? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=59&tablet=1&tid=2146203]: |
0ms |
get settings: |
19ms |
get forum list: |
24ms |
check forum access: |
7ms |
check topic access: |
7ms |
track hit: |
59ms |
get topic data: |
23ms |
get forum data: |
6ms |
get page messages: |
63ms |
get tp. blocked users: |
2ms |
| others: | 305ms |
| total: | 515ms |

| 0 / 0 |
