Speicher konnte nicht reserviert werden, obwohl Platz vorhanden ist

1134
lucasnadalutti

Ich versuche, Weka ( http://www.cs.waikato.ac.nz/ml/weka/ ) auf einem 64-Bit-Windows 7-System zu verwenden, das von Natur aus sehr speichergebunden ist. Das Problem ist, dass mein PC über 8 GB RAM verfügt und mein Task-Manager sagt, dass nur 1,5 zugewiesen werden. Wenn ich jedoch versuche, Weka auszuführen, das angeblich nur 3 GB verwendet, schlägt es mit dem folgenden Fehler fehl:

Error occurred during initialization of VM Could not reserve enough space for 3072000KB object heap 

Ideen?

1
Laufen Sie 32- oder 64-Bit-Windows 7? AFH vor 8 Jahren 0
32 bit, sorry wird bearbeitet lucasnadalutti vor 8 Jahren 0
Das ist Teil Ihres Problems: Nur 4 GB Ihres Speichers sind adressierbar. AFH vor 8 Jahren 0
Es tut mir leid, ich musste das noch einmal überprüfen, es ist eigentlich 64. Entschuldigung noch einmal, mein Schlechter lucasnadalutti vor 8 Jahren 0
Die Fehlermeldung weist darauf hin, dass für den Objektheapspeicher 300 MB erforderlich waren: Woher kamen Ihre 3 GB-Anforderungen? AFH vor 8 Jahren 0
Ich habe tatsächlich eine 0 verpasst, da ich diese aus Gründen, die nicht erklärungsbedürftig sind, von Hand kopieren musste. Das auch bearbeitet lucasnadalutti vor 8 Jahren 0
Ich frage mich, ob Ihre Java-Installation möglicherweise 32-Bit ist. In diesem Fall müssen Sie auf die zugewiesene Speichermenge achten. Wenn Sie beispielsweise 6 GB zuweisen, werden bei einer 32-Bit-Anwendung nur 2 GB angezeigt. AFH vor 8 Jahren 0

1 Antwort auf die Frage

4
DavidPostill

Bei der Initialisierung der VM ist ein Fehler aufgetreten

Es konnte nicht genügend Speicherplatz für 3072000KB-Objektheap reserviert werden

Sie müssen die maximale Heap-Größe der JVM erhöhen .

Versuchen:

java -Xmx4g ... 

Hinweis:

  • Sie müssen auch sicherstellen, dass Sie eine 64-Bit-Version der JVM installiert haben.

OutOfMemoryException

Die meisten virtuellen Java-Maschinen weisen nur eine bestimmte maximale Speichermenge für die Ausführung von Java-Programmen zu. Normalerweise ist dies viel weniger als der Arbeitsspeicher Ihres Computers. Sie können jedoch den für die virtuelle Maschine verfügbaren Speicher erweitern, indem Sie entsprechende Optionen festlegen. Mit Suns JDK können Sie beispielsweise verwenden

java -Xmx512m ...

um die maximale Größe des Java-Heapspeichers auf 512 MB festzulegen. Sie können -Xmx2ges auf 2 GB setzen.

Weitere Informationen zu diesen Optionen finden Sie unter diesem Link .

Hinweis:

Verwenden Sie den -XmsParameter nicht auch, da dies schnell zu einer OutOfMemoryException führt.

Wenn Sie WEKA unter Windows verwenden und WEKA über das Startmenü starten, lesen Sie den Abschnitt Aufruf zum Java Virtual Machine- Artikel. Dort werden die Dateien beschrieben, die Sie bearbeiten müssen, um WEKA mehr Arbeitsspeicher (RunWEKA.bat oder RunWEKA.ini) zu geben abhängig von Ihrer Version).

Denken Sie jedoch daran, dass Ihre Hardwarearchitektur und / oder Ihr Betriebssystem die Menge an Speicher, die Sie zuordnen können, einschränkt (siehe die Abschnitte 32-Bit und 64-Bit des Artikels der Java Virtual Machine).

Quelle OutOfMemoryException


Kann ich überprüfen, wie viel Speicher für WEKA zur Verfügung steht?

Sie können einfach überprüfen, wie viel Speicher von WEKA verwendet werden kann (dies hängt von der maximalen Heap-Größe ab, mit der die Java Virtual Machine gestartet wurde).

  1. Entwicklerversion
    • Starten Sie die SimpleCLI
    • Führen Sie den folgenden Befehl aus:
    • java weka.core.SystemInfo
    • Die Eigenschaft memory.max listet die für WEKA maximal verfügbare Speichermenge auf
  2. Buchversion (und Entwicklerversion)
    • Starten Sie den Explorer
    • Klicken Sie mit der rechten Maustaste in das Protokollfenster
    • Wählen Sie Speicherinformationen, um die Informationen im Protokoll auszugeben

Wenn Sie auf eine OutOfMemoryException stoßen sollten, müssen Sie die maximale Größe des Heapspeichers erhöhen. Wie viel Sie zuordnen können, hängt stark vom Betriebssystem und der zugrunde liegenden Hardware ab (siehe Abschnitte 32-Bit und 64-Bit des Artikels der Java Virtual Machine ). Schauen Sie sich auch den Abschnitt OutOfMemoryException weiter unten an.

Quelle Kann ich prüfen, wie viel Speicher für WEKA zur Verfügung steht?


Lesen Sie weiter

Vielen Dank für die ausführliche Antwort! lucasnadalutti vor 8 Jahren 0
Wenn der Task-Manager sagt: "Mein PC hat 8 GB RAM und mein Task-Manager sagt, dass nur 1,5 zugewiesen sind", spricht man von physischem Arbeitsspeicher und RAM. Wenn sich die Java VM über die Zuweisung von Speicherplatz beschwert, handelt es sich um ** virtuellen ** Arbeitsspeicher. Sie können natürlich viel mehr virtuellen Speicher verwenden, als Sie über RAM verfügen. Um jedoch zu verhindern, dass das gesamte Festschreibungslimit mit vorab zugewiesenem Heap aufgebraucht wird, das Ihre spezielle Java-App möglicherweise nicht verwendet, verfügt die Java-VM über ein Standardlimit viel wird es zuteilen. Jamie Hanrahan vor 8 Jahren 1