I would share my reflections 1. All "system" VT, "system" means f.e.created by Structured Concurrency, automatically ends and never become unreachable 2. Only application VT can become unreachable, f.e. when a blocking queue became unreachable 3. Every VT is naturally GC-able, because only diagnostic flag trackAllThreads saves unreached VT from release 4. Diagnostic is important 5. If trackAllThreads use weak reference, it can impact GC, as potentially there can be millions of VT
Maybe it is worth to consider `Thread.ofEphemeral()` tracked by weak reference 1. Implementation effort is minimal, there will be two maps of VT instead of one 2. Performance effort is zero, because only intentional, application VT can increase GC time (Volenti non fit iniuria) 3. Diagnostic still works Regards Michal Domagala pon., 12 sty 2026 o 13:41 Alan Bateman <[email protected]> napisaĆ(a): > > > On 10/01/2026 15:55, Alex Miller wrote: > > What is the likely future of the trackAllThreads flag? > TBD. It's clearly an attractive nuisance right now and setting it to > false is specific to the root "thread grouping". There is some > performance work required in that area but otherwise I think it needs to > be removed. > > -Alan >
