Ich habe die Unterstützung für nicht genügend Speicher von der Sun-Website verwendet. Wo es als
zitiert wirdNicht genügend Arbeitsspeicher: Die angeforderte Array-Größe überschreitet das VM-Limit
Dies zeigt an, dass die Anwendung versucht hat, ein Array zuzuweisen, das größer als die Heap-Größe ist. Zum Beispiel: Wenn eine Anwendung versucht, ein Array von 512 MB zuzuordnen, die maximale Größe des Heapspeichers jedoch 256 MB beträgt, dann wird dieser Fehler ausgelöst. In den meisten Fällen ist das Problem wahrscheinlich, dass auch die Größe des Heapspeichers zutrifft klein oder dass ein Fehler dazu führt, dass die Anwendung versucht, ein Array zu erstellen, dessen Größe berechnet wird falsch groß sein.
Ich habe versucht, dies durch
zu simulieren %Vor%auf meinem Rechner mit
%Vor%Aber die obige Zeile produziert
%Vor%Was vermisse ich?
Aktualisierung: Meine Java-Version ist
%Vor%Für mich
%Vor% ergibt Exception in thread "main" java.lang.OutOfMemoryError: Requested array size exceeds VM limit
PS: Wenn Sie die Ausnahme für Testzwecke erstellen müssen, können Sie auch throw new OutOfMemoryError("Requested array size exceeds VM limit")
selbst eingeben.
Das Array wird als kontinuierlicher Heapspeicherplatz zugewiesen, und der Speicher kann aufgrund der Objektzuordnung und der Speicherbereinigung fragmentiert werden. Der Speichermangelfehler tritt aufgrund des Fehlens eines festen Speicherblocks auf, um das Array zuzuweisen. Haben Sie den JVM-Speicher explizit mit dem Flag -Xmx gesendet?
Betrachtet man nur das Beispiel für Leute, die das Problem haben, scheint es aufzutreten, wenn Leute die java-native Schnittstelle benutzen, Brücke zwischen C ++ Anwendungen.
Beim Ausführen der Pure-Java-Anwendung werden bei der Standardprozedur für die Zuweisung eines Arrays die Bytes berechnet, die von der Größenvariable in der Array-Verzögerung benötigt werden, wobei eine java.lang.OutOfMemoryError: Java heap space
-Ausnahme ausgelöst wird.
Wenn das Array außerhalb der JVM erstellt wird, sieht es so aus, als würde es diese andere Ausnahme generieren. Ich bin mir sicher, dass es für dieses unterschiedliche Verhalten einen technischen Grund gibt.
Sie könnten versuchen, das Problem zu reproduzieren, das diese Person in diesem anderen Forum beschreibt .
Tags und Links java jvm out-of-memory