Есть ли объекты, которые не подлежат сборке мусора? - PullRequest
0 голосов
/ 19 ноября 2011

В java (1.6 или более ранней) есть ли объекты, которые не подлежат сборке мусора?

Ответы [ 4 ]

1 голос
/ 19 ноября 2011

Все объекты Java подлежат сборке мусора. Однако нативные ресурсы напрямую не управляются сборщиком мусора, некоторые как дескрипторы окон (JFrame) освобождаются сборщиком мусора при реализации метода finalize (), другие требуют ручного управления ресурсами.

Кроме того, jvm не должен собирать существующие объекты перед тем, как завершить работу, это может привести к незначительным ошибкам, таким как данные не будут записаны на диск.

И, наконец, есть расширения спецификации Java для систем реального времени или смарт-карт, которые включают неуправляемую память по соображениям производительности и ресурсов. Однако это не относится к стандартному jvm.

1 голос
/ 19 ноября 2011

Это зависит от того, что вы подразумеваете под «объектами».Все примитивные типы, кроме строки и всех данных, которые не были размещены в куче JVM (с использованием оператора new), не подлежат GC.Все остальное подлежит GC.

1 голос
/ 19 ноября 2011

В зависимости от реализации даже статические поля хранятся в «объекте» (который вы можете видеть в дампе кучи), который очищается при отбрасывании класса.

То, на что вы могли ссылаться, этопроксированные структуры данных.К ним относятся компоненты GUI, потоки и ByteBuffers с прямым отображением / отображением в памяти.В любом случае, объект находится в куче, однако есть структуры данных, которых нет в куче.

1 голос
/ 19 ноября 2011

Возможно, вы слышали о слабых, мягких и призрачных ссылках. Проверь это http://weblogs.java.net/blog/2006/05/04/understanding-weak-references

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