Teoretycznie, jeśli zarówno Thread
, jak i ThreadLocal
są nadal w grze, wartość będzie osiągalna. Jeśli którykolwiek z nich jest nieosiągalny, teoretycznie wartość jest zbiorem śmieci, jeśli nie ma żadnych odniesień. Istnieje jednak błąd w OpenJDK, co oznacza, że jeśli wartość odnosi się do ThreadLocal
(zaskakująco często) i, to Thread
nadal działa, to wycieknie.
Tak, w pewnym sensie, nie ma nic szczególnego w środowisku serwera. Jednak generalnie w przypadku wielokrotnego ponownego wczytywania kodu podczas programowania często jest tak, że ThreadLocal
jest osiągalny od wartości (wartość do klasy wartości do klasy-ładowarka klasy do wszystkich klas- kiedykolwiek ładowany przez klasę-ładowarkę do statycznych pól tej klasy do ThreadLocal
). Implementacje Java Beans i JDBC mogą mieć podobne problemy.
Jeśli masz buforowaną pulę wątków, wątki mogą lub nie mogą zniknąć. –