Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 24728|Antwort: 1

[Quelle] Konnte nicht genug Speicherplatz für einen 2097152KB Objektheap reservieren

[Link kopieren]
Veröffentlicht am 24.07.2017 10:43:36 | | | |
Fehler: Konnte nicht genug Speicherplatz für einen 2097152KB Objektheap reservieren

Ich habe activemq gestartet und einen Fehler gemeldet, der durch zu viel Zuweisung verursacht wurde, daher muss bei der Zuweisung von MQTT-Speicher durch Kombination der Serverspeichergröße (freie -g verwenden) und ob JDK die Speichergröße unterstützt, kombiniert werden.

JVM-Parametereinstellungen

Hauptparameter:
-Xms: Anfangsspeichergröße
-Xmx: Maximale Speichergröße
-Xmn: Größe der jüngeren Generation

Verwenden Sie den Java-Befehl -Xmx2047M -version, um zu sehen, ob er die Vorschriften erfüllt:


Lösung:

Start - > Kontrollpanel - > System - > Erweiterte Einstellungen - > Umweltvariablen - > Systemvariablen

Neue Variable:
Variablenname: _JAVA_OPTIONS   
Variablenwert: -Xmx1G






Vorhergehend:MySQL fragt eine Tabelle ohne leere Datensätze ab
Nächster:Der Unterschied zwischen Server und Client von Javas virtueller Maschine JVM
 Vermieter| Veröffentlicht am 24.07.2017 10:45:37 |
Ich arbeite kürzlich an einem Programm für Java. Ursprünglich mochte ich Javas Speicherverwaltung immer, man muss sich keine Sorgen um die Speicherzuweisung machen, einfach zuweisen, der Garbage Collector bekommt den Speicher für dich zurück. Das Programm wird nun mit einer großen Datenmenge entwickelt, und der Geschwindigkeit halber werde ich alle Informationen in den Speicher laden, was eine schnelle Antwort gewährleistet. Ich zähle immer wieder den Speicher und denke über meine eigene Datenmenge nach, was am Anfang ausreichen sollte (mein Rechner hat 4G-Speicher, obwohl Windows 3,5G erkennt, aber das sollte im Vergleich zu meinem aktuellen Datenvolumen in Ordnung sein).

Unerwartet lief das Programm des ersten Experiments einige Stunden und traf auf eine Ausnahme aus dem Gedächtnis. Wenn ich mir meine eigenen VM-Einstellungen anschaue, habe ich -Xms512M -Xmx1024M gesetzt. Ohne darüber nachzudenken, habe ich es direkt auf -Xms512M -Xmx2048M geändert, und das Ergebnis war, dass ich nicht genug Platz für den Objekt-Heap reservieren konnte. Das Programm kann nicht aufstehen. Erst dann wurde mir klar, dass es immer noch eine Grenze für den ursprünglichen maximalen Speicher gab. Ich suchte im Internet und fand viele Artikel, die dieses Thema behandelten. Schließlich habe ich den nützlichsten Artikel im DEV2DEV-Forum von BEA gefunden

Hier führte Moderator YuLimin den Test durch und kam zu dem Schluss:

Unternehmen JVM-Version Maximaler Speicher (Mega) Client Maximaler Speicher (Mega) Server

SO 1.5.x 1492 1520

SUN 1.5.5(Linux) 2634 2660

SO 1.4.2 1564 1564

SUN 1.4.2(Linux) 1900 1260

IBM 1.4.2(Linux) 2047 N/A

BEA JRockit 1.5 (U3) 1909 1902

Ich benutze JDK1.6.0_05 gerade, habe es getestet. Das Hauptproblem im Client-Zustand ist, dass mein JDK den -Server-Parameter nicht erkennt und den Serverzustand nicht testen kann. Die Schätzungen sind ungefähr gleich.

SO 1.6.0 1442 N/a

Es scheint, dass es unmöglich ist, großen Speicher in Java zu verwenden. Und das allgemeine Sprichwort ist, dass die Müllabfuhrzeit lang sein wird, wenn der Speicher zu groß ist. Das ist auch verständlich, da man in der Regel gesammelt wird, wenn der Speicher nicht ausreicht, das Scannen von 2G-Speicher natürlich viel langsamer ist als 1G, und es gibt mehr Speicherobjekte, die geschätzte Beziehung steigt exponentiell.

Im Folgenden sind YuLimins Testmethoden und Testunterlagen angehängt.

Testmethode: Verwenden Sie den Befehl java -XmxXXXXM -version, um auf der Kommandozeile zu testen, und erhöhen Sie dann allmählich den Wert von XXXX; wenn es normal läuft, bedeutet das, dass die angegebene Speichergröße verfügbar ist, andernfalls wird eine Fehlermeldung ausgedruckt.
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com