|
|
|
Освобождение памяти
|
|||
|---|---|---|---|
|
#18+
Добрый день все, получилась такая проблема. Есть большое приложение, в котором открываются (из таблицы) разные диалоги. Так вот, при открытии диалога, память увеличивается (всё правильно) А вот при закрытии, память обратно не убирается. т.е. можно наоткрывать (и потом позакрывать) кучу окон, и получится OutOfMemoryException - что не есть гут. "Закрываю" формы по по детски :( setVisible(false) Кто то может помочь, как освободить память? П.С.: System.gc(); вызываю, в таск менеджере ничего не меняется (память не очишается) :( Заранее большое спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2007, 09:33:00 |
|
||
|
Освобождение памяти
|
|||
|---|---|---|---|
|
#18+
Закрывайте "не по-децки" :)) Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2007, 09:38:24 |
|
||
|
Освобождение памяти
|
|||
|---|---|---|---|
|
#18+
Спасибо, но к сожелению. как и setVisible(); так и Form.dispose(); память не очищает. продолжает рости :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2007, 09:49:14 |
|
||
|
Освобождение памяти
|
|||
|---|---|---|---|
|
#18+
объекты могут уничножаться gc, когда они больше не достижимы. По всей видимости еще где-то остаються ссылки на ваши диалоги , возможно в listener-ах или еще где. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2007, 09:50:11 |
|
||
|
Освобождение памяти
|
|||
|---|---|---|---|
|
#18+
Вопрос, а как посмотреть где висят какие инстансы классов? и как к примеру убить листенеров? у меня их там много. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2007, 09:58:13 |
|
||
|
Освобождение памяти
|
|||
|---|---|---|---|
|
#18+
javaheappls. т.е. можно наоткрывать (и потом позакрывать) кучу окон, и получится OutOfMemoryException - что не есть гут. А куча окон это сколько? Может проще просто увеличить параметры JVM? Сколько памяти у вас используется? Для swing 16 мегов маловато будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2007, 10:16:58 |
|
||
|
Освобождение памяти
|
|||
|---|---|---|---|
|
#18+
ещё со времён дехлей было модно как бы синглетонить формы. просто не создавайте слишком много экземпляров, используйте повторно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2007, 10:23:56 |
|
||
|
Освобождение памяти
|
|||
|---|---|---|---|
|
#18+
exppещё со времён дехлей было модно как бы синглетонить формы. просто не создавайте слишком много экземпляров, используйте повторно отличный вариант. Либо вот другой. Если так теоритически предположить, что у вас объекты JFrame остаються (так как они достижимы), а у каждого объекта есть поля типа List в которых милионы объектов. То можно повесить обработчик на закрытие окна, который такие поля будет чистить (null присваивать или clear вызывать). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2007, 10:33:03 |
|
||
|
Освобождение памяти
|
|||
|---|---|---|---|
|
#18+
так я не понял, OutOfMemory падает или нет? То что память отъедается постепенно и не освобождается сразу же после окончания использования - это нормально, GC начнет работать только когда хип уже будет на исходе, по-моему... какая хоть джава-то? надо будет уточнить в спеках, в мустанге, говорят очень мужрый стал GC... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2007, 11:36:53 |
|
||
|
Освобождение памяти
|
|||
|---|---|---|---|
|
#18+
Цикличность работы gc была исправлена еще в 1.4 Jave (по крайней мере, если не используются финализаторы) А по сути, я борюсь с ростом хипа путем минимизации количества ссылочных переменных в объектах, "доставая" их через методы либо пиша в локальные в методах. Таким образом я сильно облегчаю возможность gc для сбора мусора. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2007, 12:34:30 |
|
||
|
|

start [/forum/topic.php?fid=59&tid=2145701]: |
0ms |
get settings: |
13ms |
get forum list: |
21ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
62ms |
get topic data: |
17ms |
get forum data: |
4ms |
get page messages: |
70ms |
get tp. blocked users: |
2ms |
| others: | 292ms |
| total: | 491ms |

| 0 / 0 |
