diff --git a/src/main/java/net/openhft/chronicle/map/VanillaChronicleMap.java b/src/main/java/net/openhft/chronicle/map/VanillaChronicleMap.java index 705fa0ebc..46e511bea 100644 --- a/src/main/java/net/openhft/chronicle/map/VanillaChronicleMap.java +++ b/src/main/java/net/openhft/chronicle/map/VanillaChronicleMap.java @@ -90,6 +90,8 @@ class VanillaChronicleMap, final boolean putReturnsNull; final boolean removeReturnsNull; + final boolean useSmallMultiMaps; + private final long lockTimeOutNS; private final ChronicleHashErrorListener errorListener; transient Segment[] segments; // non-final for close() @@ -140,7 +142,7 @@ class VanillaChronicleMap, this.eventListener = builder.eventListener(); hashSplitting = HashSplitting.Splitting.forSegments(actualSegments); - + useSmallMultiMaps = useSmallMultiMaps(); initTransients(); } @@ -238,19 +240,19 @@ class VanillaChronicleMap, } long sizeOfMultiMap() { - return useSmallMultiMaps() ? + return useSmallMultiMaps ? VanillaShortShortMultiMap.sizeInBytes(entriesPerSegment) : VanillaIntIntMultiMap.sizeInBytes(entriesPerSegment); } long sizeOfMultiMapBitSet() { - return useSmallMultiMaps() ? + return useSmallMultiMaps ? VanillaShortShortMultiMap.sizeOfBitSetInBytes(entriesPerSegment) : VanillaIntIntMultiMap.sizeOfBitSetInBytes(entriesPerSegment); } boolean useSmallMultiMaps() { - return entriesPerSegment <= VanillaShortShortMultiMap.MAX_CAPACITY; + return entriesPerSegment * 2L <= VanillaShortShortMultiMap.MAX_CAPACITY; } long sizeOfBitSets() { @@ -589,7 +591,7 @@ class VanillaChronicleMap, new NativeBytes(new VanillaBytesMarshallerFactory(), start, start + sizeOfMultiMapBitSet(), null); multiMapBytes.load(); - return useSmallMultiMaps() ? + return useSmallMultiMaps ? new VanillaShortShortMultiMap(multiMapBytes, sizeOfMultiMapBitSetBytes) : new VanillaIntIntMultiMap(multiMapBytes, sizeOfMultiMapBitSetBytes); }