2017-03-06 4 views

Antwort

2

Nein, Sie sparen keinen Platz.

Wenn eine JVM * autoboxes ein boolean es Boolean.valueOf(boolean) Anrufe, die entweder Boolean.TRUE oder Boolean.FALSE kehrt die static final Boolean Felder sind. Es wird keine neue Boolean Instanz erstellt. Als solches ist die von Ihnen definierte PLACEHOLDER in der Tat eine Referenz auf Boolean.TRUE und ist redundant.

Außerdem würde ich nicht Guava die Verwendung Cache für eine LRU es sei denn, ich bin bereit, die Tatsache zu akzeptieren, dass „der Cache einen Eintrag vertreiben kann, weil es wurde vor kurzem oder sehr oft nicht verwendet“ (CacheBuilder.maximumSize(long), Schwerpunkt hinzugefügt).

Wenn Sie ein Straight-up LRU möchten, können Sie Collections.newSetFromMap(Map) mit LinkedHashMap verwenden:

Set<String> cache = Collections.newSetFromMap(new LinkedHashMap<String, Boolean>() { 
    @Override 
    protected boolean removeEldestEntry(Map.Entry<String, Boolean> eldest) { 
     return size() > MAX_ENTRIES; 
    } 
}); 

Wo Sie MAX_ENTRIES definieren.


* Hinweis: Theoretisch einige JVM-Implementierung (en) könnte es da draußen, die nicht Boolean.valueOf(boolean) nennen (oder etwas ähnliches) zur Laufzeit, wenn boolean Primitiven Autoboxing, aber wenn eine solche Implementierung Ich bin existiert ziemlich sicher, dass Sie benutze es nicht und das sehr wenige, wenn irgendwelche Individuen sind. Von Boolean(boolean):

Hinweis: Es ist selten angebracht, diesen Konstruktor zu verwenden. Wenn keine neue Instanz erforderlich ist, ist die statische Fabrik valueOf(boolean) im Allgemeinen eine bessere Wahl. Es wird wahrscheinlich eine wesentlich bessere Raum- und Zeitleistung ergeben.

+0

Danke für die ausführliche Antwort. Also, ich denke, ich verschwenden Platz für die Referenz PLACEHOLDER. Es ist in Ordnung für mich, Guavas Cache. Kann ich anstelle von 'true' oder' false' mehr Speicherplatz mit einem anderen Objekttyp speichern? – theeminence

+0

@theemince Guava Cache ist schon ziemlich Platz minimal. Mir sind keine Möglichkeiten bekannt, den Speicher weiter zu reduzieren. – mfulton26

Verwandte Themen