Mam trzy moduły: moduł-a, moduł-b, moduł-c. Moduł-a i moduł-b znajdują się w warstwie startowej. Warstwa dla modułu-c Tworzę siebie. Moduł-c ma implementację JPMS usługi, której interfejs znajduje się w module-a.Jak usunąć warstwę modułów w Javie 9?
W ten sposób tworzę warstwę za pomocą modułu c w module-b.
ModuleFinder finder = ModuleFinder.of(moduleCPath);
ModuleLayer parent = ModuleLayer.boot();
Configuration cf = parent.configuration().resolve(finder, ModuleFinder.of(), Set.of("module-c"));
ClassLoader scl = ClassLoader.getSystemClassLoader();
ModuleLayer layer = parent.defineModulesWithOneLoader(cf, scl);
Następnie w module-b wywołuję usługę z modułu c. Po zakończeniu realizacji usługi nie potrzebuję już więcej modułów-c i nowoutworzonej warstwy. Jak usunąć go z JVM i zwolnić wszystkie zasoby? Czy wystarczy zrobić layer = null;
?
Czy tworzenie nowej 'ModuleLayer' bez' module-c' nie działa? – nullpointer
Czy możesz zaktualizować pytanie tym, co dokładnie wypróbowałeś i co spowodowało. – nullpointer
@nullpointer Moje pytanie zawiera wszystkie informacje, co robię i na czym polega pytanie. Jeśli czegoś nie rozumiesz, powiedz to, czego nie rozumiesz. –