> On 24 Nov 2021, at 13:33, Alan Bateman <alan.bate...@oracle.com> wrote: >> >> 1. Controller is created upon ML construction and returned from static >> ML.defineModules methods. >> 2. Created two controller liveness tests (they rely on System.gc() though - >> not sure if there are some tricks to test it reliably). > > I read your mail about "smart proxy" classes and lazy downloading of modules. > I don't have an opinion at this time on whether this is worth doing or not.
For sure it’s fun :) Regardless of “smart proxies” the lifetime of ML.Controller should be - if not fixed - at least be documented IMHO. Right now it’s a minefield. > > If you want to experiment with patches then add a volatile field to ML and > only set it when VM.isBooted() is true. In order words, let the ML.Controller > for the boot layer be GC'ed as it is now (it would be attractive nuisance to > keep it alive). There are many tests in the test/jdk tree that check that a > weak ref is cleared, there is also some test infrastructure to help, so you > might want to look at those. See attached patch. I am now curious why leaving controller for boot layer is to be avoided. -- Michal