Hier ist, was Ehcache official documentation sagt über Sizing von im Cache gespeicherten Einträge:
Sizing von gespeicherten Eingaben
Elemente in einem Speicher begrenzte Cache setzen ihre Speichergrößen gemessen haben. Die gesamte dem Cache hinzugefügte Element-Instanz wird gemessen, einschließlich einschließlich Schlüssel und Wert, sowie der Speicherbedarf für das Hinzufügen dieser Instanz zu internen Datenstrukturen. Schlüssel und Wert werden als Objektgraphen gemessen - jeder Referenz wird gefolgt und das Objekt Referenz auch gemessen. Dies geht rekursiv weiter.
Gemeinsame Referenzen werden von jeder Klasse, die darauf verweist, gemessen. Dies wird zu einer Übertreibung führen. Gemeinsame Referenzen sollten daher ignoriert werden.
Konfiguration zur Begrenzung des Traversed Objektgraph
Sizing Caches durchqueren Objektgraphen beinhaltet, ein Prozess, der mit Anmerkungen begrenzt werden kann. Dieser Prozess kann sowohl auf der CacheManager- als auch auf der Cacheebene gesteuert werden.
Kontrolle, wie tief die Größe-of-Engine kann gehen, wenn auf Haufen Elemente Sizing, indem folgende Element auf der Cachemanager Ebene
<sizeOfPolicy maxDepth="100" maxDepthExceededBehavior="abort" />
Dieses Element hat die folgenden Attribute:
maxDepth
steuert, wie viele verknüpfte Objekte besucht werden können, bevor die Größe der Engine eine Aktion ausführt. Dieses Attribut ist erforderlich.
maxDepthExceededBehavior
die angibt, was passiert, wenn die maximale Tiefe beim Dimensionieren eines Objektdiagramms überschritten wird. Mögliche Werte für diese abgelegt sind:
continue
die die Größe-Motor erzwingt eine Warnung zu protokollieren und die Dimensionierung Betrieb fortzusetzen. Wenn dieses Attribut nicht angegeben ist, ist continue
das Verhalten
abort
verwendet, die die Größen von zwingt Motor das Sizing abzubrechen, eine Warnung protokollieren und den Cache markiert als nicht korrekt Tracking Speichernutzung. Mit dieser Einstellung Ehcache.hasAbortedSizeOf()
kehrt true
Die SizeOf Politik kann (direkt unter <ehcache>
) und an der Cache-Ebene an der Cache-Manager-Ebene konfiguriert werden (unter <cache>
oder <defaultCache>
). Die Cache-Richtlinie überschreibt immer den Cache-Manager , wenn beide gesetzt sind. Dieses Element hat keine Auswirkungen auf verteilte Caches.
Abbrechen Cache ist nicht das, was man normalerweise Dinge zu beschleunigen :) – Gavriel
Sie müssen angeben, wo Sie Caching und auf welche Art von Objekten verwenden, so dass Sie verstehen, warum Sie einen so großen Graphen auf einmal cachen. –