Java 为什么netty FastThreadLocal public final V get(InternalThreadLocalMap threadLocalMap)不调用registerCleaner方法?
今天我看到了FastThreadLocalJava 为什么netty FastThreadLocal public final V get(InternalThreadLocalMap threadLocalMap)不调用registerCleaner方法?,java,netty,Java,Netty,今天我看到了FastThreadLocal public final V get() { InternalThreadLocalMap threadLocalMap = InternalThreadLocalMap.get(); Object v = threadLocalMap.indexedVariable(index); if (v != InternalThreadLocalMap.UNSET) { return (V) v; }
public final V get() {
InternalThreadLocalMap threadLocalMap = InternalThreadLocalMap.get();
Object v = threadLocalMap.indexedVariable(index);
if (v != InternalThreadLocalMap.UNSET) {
return (V) v;
}
V value = initialize(threadLocalMap);
registerCleaner(threadLocalMap);
return value;
}
public final V get(InternalThreadLocalMap threadLocalMap) {
Object v = threadLocalMap.indexedVariable(index);
if (v != InternalThreadLocalMap.UNSET) {
return (V) v;
}
return initialize(threadLocalMap);
}
为什么
public final V get()
method调用registerCleaner(threadLocalMap)
method,而public final V get(InternalThreadLocalMap threadLocalMap)
没有调用?registerCleaner
在上一版本中被一起删除。现在根本不需要了。很难猜测其他开发人员的观点和原因如果public final V get(InternalThreadLocalMap threadLocalMap)方法不调用registerCleaner(threadLocalMap),可能会导致内存泄漏。