File tree Expand file tree Collapse file tree 1 file changed +1
-1
lines changed Expand file tree Collapse file tree 1 file changed +1
-1
lines changed Original file line number Diff line number Diff line change @@ -148,7 +148,7 @@ static class Entry extends WeakReference<ThreadLocal<?>> {
148
148
- ** key 是弱引用** :` ThreadLocalMap ` 中的 key 是 ` ThreadLocal ` 的弱引用 (` WeakReference<ThreadLocal<?>> ` )。 这意味着,如果 ` ThreadLocal ` 实例不再被任何强引用指向,垃圾回收器会在下次 GC 时回收该实例,导致 ` ThreadLocalMap ` 中对应的 key 变为 ` null ` 。
149
149
- ** value 是强引用** :即使 ` key ` 被 GC 回收,` value ` 仍然被 ` ThreadLocalMap.Entry ` 强引用存在,无法被 GC 回收。
150
150
151
- 当 ` ThreadLocal ` 实例失去强引用后,其对应的 value 仍然存在于 ` ThreadLocalMap ` 中,因为 ` Entry ` 对象强引用了它。如果线程持续存活(例如线程池中的线程),` ThreadLocalMap ` 也会一直存在,导致 key 为 ` null ` 的 entry 无法被垃圾回收,机会造成内存泄漏 。
151
+ 当 ` ThreadLocal ` 实例失去强引用后,其对应的 value 仍然存在于 ` ThreadLocalMap ` 中,因为 ` Entry ` 对象强引用了它。如果线程持续存活(例如线程池中的线程),` ThreadLocalMap ` 也会一直存在,导致 key 为 ` null ` 的 entry 无法被垃圾回收,即会造成内存泄漏 。
152
152
153
153
也就是说,内存泄漏的发生需要同时满足两个条件:
154
154
You can’t perform that action at this time.
0 commit comments