расположение загрузчика класса

Я использую пользовательский загрузчик класса, который расширяет URLClassLoader. Я загружаю некоторые классы в свой пользовательский загрузчик класса и выполняю некоторую задачу. После того как задача выполнена, я хочу избавиться от загрузчика класса. Я пытался делать это путем установки ссылки в NULL.

Но это не собирает "мусор" загрузчик класса.

Существует ли путь, который может помочь тому, чего я хочу достигнуть?

5
задан java_geek 31 March 2010 в 10:52
поделиться

4 ответа

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

0
ответ дан 14 December 2019 в 08:46
поделиться

Из ] ClassLoader doc : Каждый объект Class содержит ссылку на ClassLoader, который его определил . Это предотвращает сбор вашего загрузчика. Вам также придется обнулить все ссылки на классы и экземпляры этих классов.

2
ответ дан 14 December 2019 в 08:46
поделиться

ошибка 6-летней давности на http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4950148 , похоже, именно то, что вам нужно. к сожалению, такая функциональность, похоже, еще не реализована ...

1
ответ дан 14 December 2019 в 08:46
поделиться

По сути, как уже указывал @invariant, разыменование всех классов, загружаемых конкретным загрузчиком классов, должно сделать этот загрузчик классов собираемым мусором. Однако есть (по крайней мере) одно исключение: если класс сериализован, на этот класс (и, следовательно, на его загрузчик классов) сохраняется внутренняя ссылка ObjectStreamClass , который является первичным классом и поэтому никогда не собирается сборщиком мусора. Таким образом, в этом случае загрузчик классов не может быть обработан сборщиком мусора, пока не завершится работа всей JVM.

См. Полное объяснение здесь , в разделе «Проблемы, связанные со сборкой мусора и сериализацией».

3
ответ дан 14 December 2019 в 08:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: