Нет. Это не сработает. DLL привязана к объекту класса, который у вас есть в памяти с собственным интерфейсом. Пока этот класс остается в памяти, DLL не будет выгружаться.
Это очень похоже на контейнер сервлетов, который может перезагружать классы (как часть разработки) - у них всегда есть отдельный загрузчик классов для каждого веб-контекста (см. документация загрузчика классов tomcat ).
Думайте об этом, как о спагетти - каждая ссылка - это спагетти, и только если весь шар свободен, весь беспорядок может исчезнуть.
Удалите все ссылки на объекты любого класса, загруженного загрузчиком классов, и, наконец, ссылку на сам загрузчик классов.
Только тогда gc избавится от него (и System.gc()
не гарантирует, что он запустится, он может запуститься когда-нибудь в будущем)
Это может быть очень сложно достичь - во многих случаях у вас возникают утечки памяти, потому что есть какие-то крошечные забытые спагетти, которые поддерживают весь шар живым.