Verwendung von Google-Sammlungen MapMaker?

8

Ich bin gerade auf diese Antwort in SO gestoßen , wo sie ist erwähnt, dass die Google-Sammlungen MapMaker großartig sind. Ich habe die Dokumentation durchgelesen, konnte aber nicht wirklich herausfinden, wo ich sie verwenden kann. Irgendein Szenario kann darauf hindeuten, wo es sinnvoll wäre, einen MapMaker zu verwenden.

    
Emil 17.09.2010, 16:24
quelle

2 Antworten

12

Hier ist ein kurzes Beispiel für eine Art, wie ich MapMaker verwendet habe:

%Vor%

Wenn get(id) in der Map aufgerufen wird, gibt es entweder das Foo zurück, das sich in der Map für diese ID befindet, oder es wird es vom Server abrufen, zwischenspeichern und zurückgeben. Ich muss darüber nicht nachdenken, wenn es einmal eingerichtet ist. Außerdem, da ich softValues() eingestellt habe, kann der Cache nicht voll werden und Speicherprobleme verursachen, da das System in der Lage ist, Einträge aufgrund von Speicherbedarf zu löschen. Wenn ein zwischengespeicherter Wert aus der Karte gelöscht wird, kann er den Server jedoch beim nächsten Mal erneut danach fragen!

Die Sache ist, das ist nur eine Art, wie es benutzt werden kann. Die Option, die Karte mit starken, schwachen oder weichen Schlüsseln und / oder Werten zu versehen, sowie die Möglichkeit, dass Einträge nach einer bestimmten Zeit entfernt werden, lassen Sie viele Dinge damit machen.

    
ColinD 17.09.2010, 16:53
quelle
3

Es kann hilfreich sein, wenn Sie sich die Beschreibungen von SoftReference und WeakReference .

SoftReference ist sehr nützlich für die Verwendung in Caches, da sie speziell gelöscht werden, wenn der Speicher knapp wird.

WeakReference teilt dem Garbage Collector mit, dass das Objekt, auf das verwiesen wird, erfasst werden kann, solange keine anderen Referenzen darauf bestehen. Dies wird normalerweise mit Dingen verwendet, die bei Bedarf schnell wieder nachgeschlagen werden können.

Ziehen Sie in Betracht, mit MapMaker eine ConcurrentMap mit softValues ​​für einen Cache und eine mit weakKeys für temporäre Lookup-Tabellen zu erstellen.

Bearbeiten: softValues ​​verwendet eine LRU-Richtlinie.

    
Powerlord 17.09.2010 16:38
quelle

Tags und Links