Преглед на файлове

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) {