In teoria, se entrambi gli apparecchi Thread
e ThreadLocal
sono ancora in riproduzione, il valore sarà raggiungibile. Se entrambi sono irraggiungibili, in teoria, il valore è spazzatura raccoglibile se diversamente non referenziato. Tuttavia, c'è un bug in OpenJDK che significa che se il valore fa riferimento allo ThreadLocal
(sorprendentemente comune) e lo Thread
è ancora in esecuzione, verrà perso.
Quindi sì, in un certo senso, non c'è niente di speciale in un ambiente server. Tuttavia, generalmente quando si ripete il codice di ricarica durante lo sviluppo, spesso accade che lo ThreadLocal
sia raggiungibile dal valore (valore alla classe del valore a class-loader-of-the-class a tutte le classi- caricatore sempre-through-class-class in campi-statici di quelle classi in un ThreadLocal
). Le implementazioni di Java Beans e JDBC potrebbero avere problemi simili.
fonte
2012-11-06 18:52:09
Se si dispone di un pool di thread nella cache, i thread potrebbero non andare via. –