On 13/03/2017 11:43, Peter Levart wrote:


...but then those Module(s) in the new Layer are reachable from Class(es) defined in them and those Class(es) are reachable from the common ClassLoader (ClassLoader.classes Vector). Until all classes defined by the ClassLoader (from various Layer(s)) become unreachable, none of the Layer(s) can be unloaded.

Am I right? Is package-private ClassLoader.addClass(Class) invoked by VM to record every loaded class or just every class loaded into unnamed module?
Every class (ignoring VM anonymous classes) is kept alive by its defining class loader. So if you have several layers of modules with the modules in all layers defined to the same class loader then be won't become illegible to be GC'ed and unloaded until they are all unreachable. This shouldn't be a surprise of course.

-Alan

Reply via email to