Merge pull request #804 from arya/fix_hash_wheeled_timer_space_leak
fix containsValue to take snapshot of `table` and use Arrays.fill
This commit is contained in:
commit
07e0e158d9
@ -23,6 +23,7 @@ package org.jboss.netty.util.internal;
|
|||||||
import java.util.AbstractCollection;
|
import java.util.AbstractCollection;
|
||||||
import java.util.AbstractMap;
|
import java.util.AbstractMap;
|
||||||
import java.util.AbstractSet;
|
import java.util.AbstractSet;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.ConcurrentModificationException;
|
import java.util.ConcurrentModificationException;
|
||||||
import java.util.Enumeration;
|
import java.util.Enumeration;
|
||||||
@ -355,7 +356,8 @@ public final class ConcurrentIdentityHashMap<K, V> extends AbstractMap<K, V>
|
|||||||
|
|
||||||
boolean containsValue(Object value) {
|
boolean containsValue(Object value) {
|
||||||
if (count != 0) { // read-volatile
|
if (count != 0) { // read-volatile
|
||||||
for (HashEntry<K, V> e: table) {
|
HashEntry<K, V>[] tab = table;
|
||||||
|
for (HashEntry<K, V> e: tab) {
|
||||||
for (; e != null; e = e.next) {
|
for (; e != null; e = e.next) {
|
||||||
V opaque = e.value();
|
V opaque = e.value();
|
||||||
V v;
|
V v;
|
||||||
@ -515,9 +517,7 @@ public final class ConcurrentIdentityHashMap<K, V> extends AbstractMap<K, V>
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
table = newTable;
|
table = newTable;
|
||||||
for (int i = 0; i < oldCapacity; ++i) {
|
Arrays.fill(oldTable, null);
|
||||||
oldTable[i] = null;
|
|
||||||
}
|
|
||||||
return reduce;
|
return reduce;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user