Java Heap ist eine Begrenzung für die Größe von Objekten, die Sie im System haben können. Wenn die Größe Ihres Objekts außerhalb des Heapspeichers liegt, wird der Fehler "Nicht genügend Arbeitsspeicher" generiert.
In Ihrem Fall ist die Gesamtgröße Ihres Objekts (Objekt in ArrayList + anderen Objekten in Ihrem System) wichtiger, da Ihre ArrayList nur auf diese Objects verweist.
Hier sind VM-Optionen können Sie Heap-Größe wie pro Ihre Anforderung (von the java
documentation) verwenden zu setzen:
-Xms
n
Geben Sie die Anfangsgröße in Byte von der Speicher Zuteilungspool. Dieser Wert muss ein Vielfaches von 1024 größer als 1MB sein. Fügen Sie den Buchstaben k oder K zu geben Kilobyte oder M oder M zu Megabyte angeben. Der Standardwert ist 2 MB. Beispiele:
-Xms6291456
-Xms6144k
-Xms6m
-Xmx
n
Geben Sie die maximale Größe, in Bytes, von die Speicherzuordnung Pool. Dieser Wert muss ein Vielfaches von 1024 größer als 2MB sein. Fügen Sie den Buchstaben k oder K zu geben Kilobyte oder M oder M zu Megabyte angeben. Der Standardwert ist 64 MB.Beispiele:
-Xmx83886080
-Xmx81920k
-Xmx80m
prüfen Heap Infos von VM Spec
3.5.3 Heap
Die Java Virtual Machine einen Haufen hat, die unter allen Java Virtual Machine> Threads gemeinsam genutzt wird. Der Heap ist der Laufzeitdatenbereich, aus dem Speicher für alle Klasseninstanzen und Arrays zugewiesen wird. Der Heap wird beim Start der virtuellen Maschine erstellt. Heap-Speicher für Objekte wird durch ein automatisches Speicherverwaltungssystem (bekannt als Garbage Collector) zurückgewonnen; Objekte werden nie explizit freigegeben. Die virtuelle Java-Maschine nimmt keinen besonderen Typ von automatischem Speicherverwaltungssystem an, und die Speicherverwaltungstechnik kann entsprechend den Systemanforderungen des Implementierers gewählt werden. Der Heap kann eine feste Größe haben oder, wie von der Berechnung gefordert, erweitert werden und kann zusammengezogen werden, wenn ein größerer Heap unnötig wird. Der Speicher für den Heap muss nicht zusammenhängend sein.
Eine Java Virtual Machine-Implementierung kann dem Programmierer oder dem Benutzer die Kontrolle über die anfängliche Größe des Heapspeichers sowie, falls der Heap dynamisch erweitert oder> kontrahiert werden kann, Kontrolle über die maximale und minimale Heap-Größe geben. 5
die folgenden Ausnahmezustand mit dem Heap zugeordnet:
Wenn eine Berechnung als mehr Heap benötigt, kann durch die automatische Speichermanagement-System zur Verfügung gestellt werden, die Java Virtual Machine ein OutOfMemoryError wirft.
Verdammt, ich entwarf gerade ein Objekt mit 65536 Feldern :( – fish
@fish: das ist kein Design, das ist ein Unfall ;-) –