Wann wird Java Cache verwendet und wie unterscheidet es sich von HashMap?

8

Ich habe javax.cache.Cache durchgesehen, um zu verstehen, wie es verwendet wird und wie es funktioniert. Es wird gesagt,

  

JCache ist eine kartenähnliche Datenstruktur, die temporäre Speicherung von   Anwendungsdaten.

JCache und HashMap speichert die Elemente im lokalen Heapspeicher und hat standardmäßig kein Persistenzverhalten. Durch die Implementierung von benutzerdefinierten CacheLoader und CacheWriter können wir Persistenz erreichen. Abgesehen davon, wann es zu verwenden?

    
Kamal Chandraprakash 08.06.2016, 06:50
quelle

2 Antworten

5

Caches haben normalerweise mehr Verwaltungslogik als eine Map, die nichts anderes als eine mehr oder weniger einfache Datenstruktur ist.

Einige Konzepte, die JCaches implementieren kann

  • Ablauf: Einträge können ablaufen und nach einer bestimmten Zeit oder seit der letzten Verwendung aus dem Cache entfernt werden.
  • Eviction: Elemente werden aus dem Cache entfernt, wenn der Speicherplatz begrenzt ist. Es kann verschiedene Räumungsstrategien geben .e. LRU, FIFO, ...
  • Verteilung: d.h. in einem Cluster, während Maps für eine JVM
  • lokal sind
  • Persistenz: Elemente im Cache können persistent sein und nach dem Neustart vorhanden sein, der Inhalt einer Map ist einfach verloren
  • Mehr Arbeitsspeicher: Cache-Implementierungen benötigen möglicherweise mehr Arbeitsspeicher als der JVM-Heap, wobei eine Technik namens BigMemory verwendet wird, bei der Objekte in einem separat zugewiesenen Bytepuffer serialisiert werden. Dieser JVM-externe Speicher wird vom Betriebssystem verwaltet (Paging) und nicht von der JVM
  • Option zum Speichern von Schlüsseln und Werten entweder nach Wert oder als Referenz (in Karten, die Sie selbst behandeln)
  • Option zum Anwenden der Sicherheit

Einige von diesen sind allgemeinere Konzepte von JCache, einige sind spezifische Implementierungsdetails von Cache-Anbietern

    
Gerald Mücke 08.06.2016 07:16
quelle
1

Hier sind die fünf Hauptunterschiede zwischen den beiden Objekten.

  

Im Gegensatz zu java.util.Map, Cache:

     
  • erlaubt keine Nullschlüssel oder Werte. Versuche, null zu verwenden, führen zu einer java.lang.NullPointerException
  •   
  • bietet die Möglichkeit, Werte aus einem javax.cache.integration.CacheLoader (read-through-caching) zu lesen, wenn a   Der angeforderte Wert befindet sich nicht in einem Cache
  •   
  • bietet die Möglichkeit, Werte in einen javax.cache.integration.CacheWriter (Write-Through-Caching) zu schreiben, wenn a   Wert wird erstellt / aktualisiert / aus einem Cache gelöscht
  •   
  • bietet die Möglichkeit, Änderungen am Cache-Eintrag zu beobachten
  •   
  • kann Betriebsstatistiken erfassen und messen
  •   

Quelle : GrepCode.com

    
Yassin Hajaj 08.06.2016 07:12
quelle

Tags und Links