Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Stream OutOfMemoryError / 5 сообщений из 5, страница 1 из 1
24.01.2007, 13:32:56
    #34278578
Tassadar77
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Stream OutOfMemoryError
Я новичок в java. Есть потребность забирать xml - файл с сервера, размер файла ~100K.

Вот код:

String Data = null;
try
{
HttpConnection Connection = (HttpConnection)Connector.open("http://.../2006-12-12.xml");
InputStream Stream = Connection.openInputStream();
byte[] Buffer = new byte[1024];
int BytesRead = 0;
try
{
while (true)
{
BytesRead = Stream.read(Buffer);
if (BytesRead > 0)
{
Data += new String(Buffer, "UTF8");
}
else
{
break;
}
}
}
catch (OutOfMemoryError err)
{
Data = "Out of Memory Error!";
}
finally
{
Stream.close();
}
Connection.close();
Form form = new Form("Test");
form.append(Data);
Display.getDisplay(this).setCurrent(form);
}
catch (IOException ioe)
{
throw new MIDletStateChangeException("Network not available");
}

Внутренний try catch блок постоянно выдает OutOfMemoryError, в чем может быть дело?
...
Рейтинг: 0 / 0
25.01.2007, 11:28:01
    #34281212
am_sasa
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Stream OutOfMemoryError
Tassadar77Я новичок в java. Есть потребность забирать xml - файл с сервера, размер файла ~100K.

Data += new String(Buffer, "UTF8");

рискну предположить из за нехватки памяти, т.к. она у тя шахматка...
меняй нафиг эту строчку на StringBuilder . append(...) и будет тебе счастье!
...
Рейтинг: 0 / 0
25.01.2007, 11:34:23
    #34281243
mozheyko_d
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Stream OutOfMemoryError
Судя по
Код: plaintext
1.
2.
3.
...
 throw   new  MIDletStateChangeException("Network not available");
...
это J2ME, а значит StringBuilder'а нет.
Зато есть StringBuffer
...
Рейтинг: 0 / 0
25.01.2007, 16:00:23
    #34282560
crazytoo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Stream OutOfMemoryError
Все правильно, во время цикла при каждой итерации создается новый объект Стринг, что сильно засоряет память, необходимо более внимательно изучить основы Java, потому как незнание того, что объект String - неизменяемый(не считая хакерских заморочек), может привести вас к подобным граблям. Вывод - конечно используйте StringBuffer
...
Рейтинг: 0 / 0
29.01.2007, 18:01:00
    #34290742
Tassadar77
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Stream OutOfMemoryError
Всем спасибо за ответы.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Stream OutOfMemoryError / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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