Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Out of memory После закрытия JFrame на него, сохраняются ссылки и память не oсвобожда 
V
    Опции темы
Mirkes
Дата 28.4.2013, 20:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 586
Регистрация: 18.8.2011
Где: Красноярск

Репутация: 7
Всего: 17



Out of memory После закрытия JFrame на него сохраняются ссылки и память не oсвобождается.
Я создаю и отображаю JFrame следующим образом
Код

    new MyFrame(arg1).setVisible(true)

После некоторой работы с ним я его закрываю щелчком по крестику.
После возникновения Out of memory я создал snapshot и с удивлением обнаружил, что ссылка на давно закрытый MyFrame сохранилась и память не освободилась. 
Ссылки сохранились в различных "встроенных" объектах типа Actions добавленных в меню и панель инструментов, в "parent javax.swing.JRootPane(2)"
и т.п.
Что нужно сделать, что бы память освободилась? Написать процедуру разборки MyFrame? Как должен называться такой метод?


--------------------
Mirkes
PM MAIL   Вверх
dorogoyIV
Дата 28.4.2013, 22:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1503
Регистрация: 26.3.2007

Репутация: 3
Всего: 46



а операция закрытия прописана?
Код

MyFrame mf = new MyFrame(arg1);
mf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

PM MAIL   Вверх
Mirkes
Дата 29.4.2013, 09:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 586
Регистрация: 18.8.2011
Где: Красноярск

Репутация: 7
Всего: 17



MyFrame не главная форма. Я создю ее многократно и столь же многократно закрываю. Для не главных форм тоже надо указывать операцию при закрытии?

Это сообщение отредактировал(а) Mirkes - 29.4.2013, 09:55


--------------------
Mirkes
PM MAIL   Вверх
LSD
Дата 29.4.2013, 10:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15719
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



dispose() вызываешь?


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Mirkes
Дата 29.4.2013, 11:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 586
Регистрация: 18.8.2011
Где: Красноярск

Репутация: 7
Всего: 17



Цитата(LSD @ 29.4.2013,  10:37)
dispose() вызываешь?

Нет. А где его вызывать? Ловить событие закрытия окна?
Мне удалось победить проблему добавлением следующей строки
Код

        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

Я так понимаю, что ето (черт возьми где в транслите буква, которая должна быть первой в последнем слове перед скобкой?) приблизительно тоже самое, что и вызов dispose().

В документации сказано:
Цитата

To make a window that is dependent on another window — disappearing when the other window is iconified, for example — use a dialog instead of frame.. To make a window that appears within another window, use an internal frame. 


Следует ли ето понимать так, что JFrame предназначен только для главной формы приложения, а для всего остального следует использовать JDialog и JInternalFrame?

Собственно оцновная проблема решена, но хотелось бы узнать ваше мнение по поводу вопроса об ицпользовании JFrame, JDialog и JInternalFrame.
Спасибо dorogoyIV и LSD

Это сообщение отредактировал(а) Mirkes - 29.4.2013, 11:22


--------------------
Mirkes
PM MAIL   Вверх
LSD
Дата 29.4.2013, 11:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15719
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(Mirkes @  29.4.2013,  12:21 Найти цитируемый пост)
Я так понимаю, что ето (черт возьми где в транслите буква, которая должна быть первой в последнем слове перед скобкой?) приблизительно тоже самое, что и вызов dispose().

Да, это приводит к автоматическому вызову dispose() при закрытии окна.

Добавлено через 3 минуты и 30 секунд
Цитата(Mirkes @  29.4.2013,  12:21 Найти цитируемый пост)
Следует ли ето понимать так, что JFrame предназначен только для главной формы приложения, а для всего остального следует использовать JDialog и JInternalFrame?

Нет. Зависит от того что ты пытаешься реализовать. JInternalFrame предназначен для MDI интерфейса, JFrame - SDI.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0489 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.