2016-06-15 6 views
-1

Gibt es Nachteile (in Bezug auf Speicher) für die Verwendung von Maps in Java?Nachteil der Verwendung von Map in Bezug auf die Speicherauslastung in Java

Da nach meinem Wissen, wenn Sie HashMaps oder andere Sammlungen Klassen verwenden.

Für z.

Map<String , String> map = new HashMap<String, String>(); 

map.put("id",1); 
map.put("name","test123"); 

Also habe ich 2 Bissen für jeden von denen angenommen. Und nach meiner Meinung halten Map oder jede andere Sammlung 100 Bissen, so dass die restlichen 98 Bissen verschwendet werden. Also, für dieses Szenario, kann ich noch etwas anderes verwenden?

+0

meinst du ** bytes **? – SpringLearner

Antwort

0

Erstens, ja, das Erstellen einer Karte hat einen gewissen Speicheraufwand für sehr kleine Datenmengen. Es erstellt Arrays mit Entry-Wrapper-Klassen für die angegebene Ladekapazität/Ladefaktor. Sie verschwenden vielleicht ein paar Bytes, aber im Zeitalter von Gigabyte-Speicher würde das nur ein Problem werden, wenn Sie Millionen oder sogar Milliarden von Karten erstellen würden, abhängig davon, wie viel Speicher Sie Ihrer Anwendung tatsächlich geben und was andere Dinge muss es verwalten.

Wenn ich weiß, dass ein Sammeln wirklich klein bleibt und ich die Schlüssel sowieso nicht verwende, benutze ich manchmal nur eine Liste, weil das Überprüfen von 2 oder 4 Elementen sowieso ziemlich schnell ist. Sorgen Sie sich am Ende nicht einmal um so kleine Dinge, bis sie einen großen Teil der verfügbaren Speicherkapazität einnehmen.

1

Eine Beschreibung Anfangskapazität und Ladefaktor finden What is the significance of load factor in HashMap?

Wenn Sie Arrays verwenden, werden Sie wahrscheinlich weniger Speicher verwenden, als wenn Sie eine Karte verwenden. Aber in den meisten Fällen ist die Benutzerfreundlichkeit und Lesbarkeit viel wichtiger als die Speichernutzung.

Siehe auch Hash Map Memory Overhead für eine Beschreibung von HashMap s Speicherverbrauch.

Verwandte Themen