ThreadLocal會不會有所謂“記憶體洩漏”的問題

tyro發表於2005-05-09

關於threadlocal我有一個問題。
一般認為,threadlocal中有一個map,(上文中的private Map storage = Collections.synchronizedMap(new HashMap())),map中的key為Thread.currentThread,我覺得這個map是不是隻會增大而不會減小。每多建一個新的執行緒,就會多一個。而當執行緒結束時,如果不是執行緒池的話,執行緒物件就沒用了,但map中沒有除去以該執行緒做key的元素。後果很可能就是,在JVM中有許多執行緒物件,它們分配的空間無法被收回。
在java sdk api ThreadLocal中有這樣一段,是什麼意思
Each thread holds an implicit reference to its copy of a thread-local variable as long as the thread is alive and the ThreadLocal instance is accessible; after a thread goes away, all of its copies of thread-local instances are subject to garbage collection (unless other references to these copies exist).

相關文章