Может ли Java повторно использовать необработанные системные ресурсы графического интерфейса? - PullRequest
6 голосов
/ 11 января 2011

Я пытаюсь понять больше о функции dispose () класса AWT / Swing Window и о том, что она делает. Представьте себе следующую серию событий:

  1. Экземпляр A производного от Window X собирается после выхода из области видимости. Утилизация не вызывается перед сборкой мусора.
  2. Новый экземпляр X, B создан и показан.

Использует ли B неразмещенные ресурсы, оставшиеся после того, как A был GC'd?

Кроме того, для производной Window Z, если существует много экземпляров Z, может ли JRE повторно использовать ресурсы окна между ними?

1 Ответ

1 голос
/ 11 января 2011

Это больше из общего понимания того, как работает память, но:

Если ресурсы не были утилизированы, вы не можете их использовать, потому что они все еще используются.Когда ресурсы не удаляются / удаляются мусором / освобождаются, они не могут быть использованы, потому что есть что-то еще, занимающее эту память.Однако, как только он выходит из области его применения, его фактически следует утилизировать.Если это не так, то в JVM это может привести к утечке памяти .

Во второй части, если вы имеете в виду блоки памяти между элементами, этовсе зависит от того, достаточно ли места.Опять же, я не на 100% знаю, как JVM управляет памятью, но если вам нужно два блока памяти, а между Z1 и Z2 есть только один блок, то нет, ему потребуется непрерывное пространство в памяти.

...