Warum bekomme ich einen OutOfMemoryError beim einfügen von 50.000 Objekte in die HashMap?

Ich versuche zu legen, die etwa 50.000 Objekten (und somit auch die 50.000 keys) in einer java.util.HashMap<java.awt.Point, Segment>. Allerdings habe ich immer eine OutOfMemory-exception. (Segment ist meine eigene Klasse - sehr geringes Gewicht - ein String Feld und 3 int Felder).

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space 
bei java.util.HashMap.Größe(HashMap.java:508) 
bei java.util.HashMap.addEntry(HashMap.java:799) 
bei java.util.HashMap.put(HashMap.java:431) 
at-bus.tools.UpdateMap.putSegment(UpdateMap.java:168)

Das erscheint mir ziemlich lächerlich, weil ich sehe, dass es viel Speicher auf dem Gerät verfügbar - sowohl in der freien RAM-und Festplattenspeicher für den virtuellen Speicher.

Ist es möglich, Java ausgeführt wird, mit einigen strengen Anforderungen an den Arbeitsspeicher? Erhöhe ich diese?

Gibt es einige seltsame Einschränkung mit HashMap? Bin ich zu haben, zu implementieren? Gibt es andere Klassen, die zu betrachten sich lohnt?

(Ich arbeite mit Java 5 unter OS X 10.5 auf einem Intel-Rechner mit 2 GB RAM.)

InformationsquelleAutor der Frage Frank Krueger | 2008-10-24

Schreibe einen Kommentar