2016-01-15 2 views
0

В hotspot jvm в области памяти есть область кучи и метода, а в методе есть «куча» и «область метода» и т. Д. Объект I new настроен на кучу, классы, поле, интерфейс, загруженный загрузчиком классов устанавливается в область метода.Будет ли загруженный класс в области методов «выгружен» GC?

Я думаю, gc не должен собирать информацию о классе, которая находится в области метода. Однако статья на китайском языке показывает, что it does't mean gc wouldn't handle method area, it is just very few. When it happens, the constants and loaded class, field etc will be collected.

Я сомневаюсь, произойдет ли это. Если да, то когда?

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

ответ

0

Я сомневаюсь, произойдет ли это. Если да, то когда?

При сборе класса также собираются все связанные с этим классом (включая код в PermGen/metaspace).

Класс собирается, если больше нет ссылок на этот класс.

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

У вас могут быть классы, например. которые не связаны с загрузчиком классов, и они могут умереть, когда они больше не используются.

Смежные вопросы