Преглед изворни кода

Cache - poprawiona alokacja pamięci dla dużych kolekcji

Ranides Atterwim пре 13 година
родитељ
комит
14dc220ba9
1 измењених фајлова са 5 додато и 1 уклоњено
  1. 5 1
      src/main/java/net/ranides/assira/collection/map/Cache.java

+ 5 - 1
src/main/java/net/ranides/assira/collection/map/Cache.java

@@ -182,9 +182,13 @@ public class Cache<K,V> extends AbstractMap<K,V> {
         final int maxsize;
 
         CacheMap(int maxsize) {
-            super( Math.round(maxsize / 0.75f)+2, 0.75f, true);
+            super( ic(maxsize), 0.75f, true);
             this.maxsize = maxsize;
         }
+        
+        private static int ic(int maxsize) {
+            return ( maxsize == Integer.MAX_VALUE) ? 16 :Math.min(Math.round(maxsize / 0.75f)+2, 2048);
+        }
 
         @Override
         protected boolean removeEldestEntry(Entry<TK, Reference<TV>> eldest) {