Ich versuche herauszufinden, was die Zahl, die Sie in Guava CacheBuilder maximumSize() angeben.Guava CacheBuilder maximumSize
sagen, dass ich so etwas in meinem Code haben,
Cache<String, Object> programCache = CacheBuilder.newBuilder()
.maximumSize(1000)
.build();
Ist die 1000, die ich als die maximale Größe bedeuten angegeben, dass ich tausend verschiedene Einträge im Cache haben kann, bevor es zu treten beginnt die LRU (egal welche Größe das Objekt haben könnte)? Wenn dies der Fall ist, gibt es eine Grenze für die Größe des Objekts?
Oder bedeutet das 1000, dass ich eine 1000mb habe (ist MB korrekt?) Mit zu arbeiten und ich kann so viele der Objekte im Cache haben, wie ich will bis 1000mb, bevor es beginnt, die LRU zu treten?
Dies bedeutet, dass der Cache nie 1.000 Einträge überschreitet. Aufgrund des internen Designs kann es vor diesem Schwellenwert geräumt werden. Um basierend auf der Objektgröße ([Gewicht] (https://github.com/google/guava/wiki/CachesExplained#size-based-eviction)) zu entfernen, verwenden Sie eine "Waage" und "maximumWeight". Obwohl nicht empfohlen, können Sie [jamm] (https://github.com/jbellis/jamm) verwenden, um die Laufzeitgröße zu schätzen. –
Vielleicht möchten Sie das Guava-Wiki von Google durchsuchen, um zu erfahren, wie sie die Cache-Einträge entfernen. Sehen Sie sich speziell für Ihre Frage [Größenbasierte Räumung] an (https://code.google.com/p/guava-libraries/wiki/CachesExplained#Size-based_Eviction). Ich denke, diese Zeile ist interessant - ** Warnung: Der Cache kann Einträge löschen, bevor dieses Limit überschritten wird - in der Regel, wenn die Cache-Größe das Limit erreicht **. – afrin216
Die Größe der Objekte ist nicht begrenzt. (Auch wenn Sie versuchen, die Größe von Java-Objekten in Byte zu messen, ist dies ein teures, verwirrendes, plattformabhängiges und fehleranfälliges Unterfangen.) –