![]() |
Модераторы: javastic, AntonSaburov |
![]() ![]() ![]() |
|
javastic |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1214 Регистрация: 18.3.2005 Где: St.Petersburg Репутация: 19 Всего: 27 |
делаем экземпляр класса, он выполняет какую-то задачу, затем я хочу его убрать из памяти т.к. он больше не нужен (это может быть полезно при использовании splash скринов, About'ов и тд.
![]() -------------------- 01101010 01100001 01110110 01100001 01110011 01110100 01101001 01100011 scjp, mcp |
|||
|
||||
AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: нет Всего: 118 |
MyObject=null;
System.gc(); |
|||
|
||||
batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 1 Всего: 151 |
А разве нужен явный вызов сборщика мусора? Он ведь и сам должен периодически чиститься...
-------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
Cr@$h |
|
|||
![]() Исследователь ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1693 Регистрация: 3.4.2005 Где: Санкт-Петербург, Россия Репутация: нет Всего: 41 |
Да. И его вызывать даже не рекомендуют, это может замедлить раюоты, кроме него никто не знает, когда он запускался.
|
|||
|
||||
javastic |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1214 Регистрация: 18.3.2005 Где: St.Petersburg Репутация: 19 Всего: 27 |
То что сборщик мусора этим занимается это понятно (после завершения! приложения, но не в процессе выполнения), но как быть если было создано
много объектов или несколько, но больших? Развивая далее эту тему хотелось бы узнать насколько связана RMS память для мидлета и его общий размер? Это одно пространство или разделённое? Я просто боюсь что при создании большого числа объектов отнимится память для RMS. Это сообщение отредактировал(а) javastic - 25.4.2005, 14:09 -------------------- 01101010 01100001 01110110 01100001 01110011 01110100 01101001 01100011 scjp, mcp |
|||
|
||||
batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 1 Всего: 151 |
Не знаю, как это организуется в j2me, но вроде обычно GC запускается автоматически при нехватке памяти, так что он отработает и в процессе работы приложения.
-------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
Cr@$h |
|
|||
![]() Исследователь ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1693 Регистрация: 3.4.2005 Где: Санкт-Петербург, Россия Репутация: нет Всего: 41 |
Не уверен, что во ремя приложения не происходит зачистки!
|
|||
|
||||
javastic |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1214 Регистрация: 18.3.2005 Где: St.Petersburg Репутация: 19 Всего: 27 |
Ладненько, спасибо. Будем запущать отладчики.
![]() -------------------- 01101010 01100001 01110110 01100001 01110011 01110100 01101001 01100011 scjp, mcp |
|||
|
||||
Stalnoj |
|
|||
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 20.10.2004 Репутация: нет Всего: 2 |
Вообще в j2me как-то криво иногда память чистится. Порой просто присвоить объекту null бывает недостаточно. Мой совет такой, если этот объект класс, то создать в этом классе метод
destroy(), в нем всем объектам класса присвоить нули (включая и строки). А потом вызывать myObject.destroy(); myObject = null; Если этот объект, к примеру, Vector (да еще если это вектор объектов какого-то класса), то я бы рекомендовал вначале занулить все объекты вектора, а потом уже и сам вектор. В общем не ждите, что java все сделает за вас ![]() А вот Sуstem.gc() я бы не рекомендовал использовать. Во всяком случае крайне редко. Ну, например, если у вас какая-нибудь игра, где происходит переход из меню в игровой режим. При этом большое количество ресурсов выгружается и загружается в память. Тогда есть резон один раз! в конце этого процесса вызвать gc(). В процессе же игры этого делать не стоит. Во-первых, это тормозит приложение (видно даже на глаз - игру как бы цепляет). Во-вторых, java сделает это за вас когда будет нужно ![]() ![]() Это сообщение отредактировал(а) Stalnoj - 14.5.2005, 18:01 |
|||
|
||||
hTonus |
|
||||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 30.3.2007 Репутация: нет Всего: нет |
heap мидлета и RMS память это разные вещи.
|
||||
|
|||||
javastic |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1214 Регистрация: 18.3.2005 Где: St.Petersburg Репутация: 19 Всего: 27 |
hTonus, спасибо!
![]() -------------------- 01101010 01100001 01110110 01100001 01110011 01110100 01101001 01100011 scjp, mcp |
|||
|
||||
Sopromat |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 7.11.2007 Репутация: нет Всего: нет |
Да..
Утечка памяти - это большая проблема и закрывать эту тему не стоит!!! Коллектор кстати по видимому только когда ссылки с объектом очевидно разорваны, либо когда нехватает памяти... в остальных случаях - утечка... Я с этим столкнулся когда писал одну прогу..... На мобиле пользуешься - пользуешься, а потом бац!!! Ошибка !! И вылетает. И это из-за нехватки памяти. Добавлено через 2 минуты и 56 секунд Кстати вот Вам пример.... Что будет происходить с памятью?
|
|||
|
||||
W0LF |
|
|||
![]() alexander lonsky ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1164 Регистрация: 9.2.2006 Где: Ukraine.Dnepropet rovsk Репутация: 19 Всего: 20 |
Первая строка выделяет память под объект, ссылка указывает на него.
Потом вызывается его метод, если этот метод не переприсваивает эту память другой ссылке? то последняя трока выделяет новую память и теперь ссылка O указывает на нее, то что было выделено ранее остается в памяти, на него нет ссылок, когда будет нехватать памяти, пройдется GC и удалит ее Добавлено через 2 минуты и 43 секунды
-------------------- iOS developer |
|||
|
||||
![]() ![]() ![]() |
FAQ раздела лежит здесь! |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java ME (J2ME) | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |