Собственные ресурсы экрана автоматически высвобождаются при выходе из JVM? - PullRequest
2 голосов
/ 24 февраля 2012

Если делать System.exit(1) из приложения Swing, автоматически ли высвобождаются собственные ресурсы, связанные с графикой?Если я добавлю myFrame.dispose() с myFrame в качестве единственного контейнера верхнего уровня в приложении, могу ли я быть уверенным, что не получаю раздражающее поведение, которое можно увидеть в некоторых не Java-графических интерфейсах, использующих программы, в которых часть состояния графического интерфейса будет зависать замороженнойна экран при внезапном выходе?

Ответы [ 2 ]

4 голосов
/ 24 февраля 2012

Все, что принадлежит процессу, освобождается при выходе из процесса, если вы не говорите о патологических операционных системах, таких как Netware 3 и 4.

2 голосов
/ 24 февраля 2012
  • Контейнеры верхнего уровня никогда не GC'ed, потому что пропущенный метод finalize ()

  • В этом контексте JFrame.dispose() ничего не делать, этот контейнер все еще присутствуетв UsedMemory, без изменений, до тех пор, пока не завершится текущий экземпляр JVM,

  • вы можете вернуть UsedMemerory, удалив его содержимое, уведомив об удалении чего-либо из ContentPane, в противном случае (RootPane удалено) ваш контейнер остается прозрачным, только с видимыми ToolBar и Borders,

  • все окна всегда доступны и доступны для повторного использования, вы можете проверить это по Window[] allWindows = Window.getWindows(); в течение всего жизненного цикла приложения

  • перед повторным использованием тестового контейнера для isDisplayable()

  • всего важного здесь

затем

1) не создавать много контейнеров верхнего уровня,

2) существующий контейнер re_use

3) только Object, потерявший все ссылки, может быть GC'ed

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...