587 Stimmen

Wie geht man mit "java.lang.OutOfMemoryError: Java heap space"-Fehler?

Ich schreibe ein clientseitiges Schaukel Anwendung (grafischer Schriftdesigner) auf Java 5 . In letzter Zeit stoße ich auf java.lang.OutOfMemoryError: Java heap space Fehler, weil ich bei der Speichernutzung nicht sparsam bin. Der Benutzer kann eine unbegrenzte Anzahl von Dateien öffnen, und das Programm behält die geöffneten Objekte im Speicher. Nach einer kurzen Recherche fand ich Ergonomie in der virtuellen Java-Maschine 5.0 und andere sagen, dass die JVM auf Windows-Rechnern standardmäßig die maximale Heap-Größe als 64MB .

Wie sollte ich in dieser Situation mit dieser Einschränkung umgehen?

Ich könnte die maximale Heap-Größe mit Kommandozeile Option zu Java, aber dazu müsste man den verfügbaren Arbeitsspeicher ermitteln und ein Startprogramm oder Skript schreiben. Außerdem ist die Erhöhung auf einige Endliche max nicht letztlich das Problem loszuwerden.

Ich könnte einen Teil meines Codes umschreiben, um Objekte häufig im Dateisystem zu persistieren (die Verwendung einer Datenbank ist das Gleiche), um Speicherplatz freizugeben. Es könnte funktionieren, aber es ist wahrscheinlich auch eine Menge Arbeit.

Könnten Sie mir Einzelheiten zu den oben genannten Ideen oder einige Alternativen nennen, z. B. automatischer virtueller Speicher, dynamisches Erweitern der Heap-Größe Das wird großartig sein.

4voto

itzo Punkte 1141

Android-Studio

File -> Invalidate Caches and Restart hat es bei mir gelöst :)

4voto

Wenn Sie dies in einer Einsatzsituation benötigen, sollten Sie die Verwendung von Java WebStart in Erwägung ziehen (mit einer "Ondisk"-Version, nicht der Netzwerkversion - möglich in Java 6u10 und später), da Sie damit die verschiedenen Argumente für die JVM plattformübergreifend angeben können.

Andernfalls benötigen Sie einen betriebssystemspezifischen Launcher, der die benötigten Argumente setzt.

3voto

Chukwunazaekpere Punkte 368

Wenn dieser Fehler während der APK-Generierung in React-Native auftritt, wechseln Sie in den Android-Ordner in Ihrem Projekt und führen Sie ihn aus:

./gradlew clean

dann

./gradlew assembleRelease

Wenn der Fehler weiterhin besteht, starten Sie Ihr Gerät neu.

2voto

htlbydgod Punkte 133

In Bezug auf Netbeans können Sie die maximale Heap-Größe einstellen, um das Problem zu lösen.

Gehen Sie auf 'Ausführen', dann --> 'Projektkonfiguration festlegen' --> 'Anpassen' --> 'Ausführen' des sich öffnenden Fensters --> 'VM Option' --> geben Sie '-Xms2048m -Xmx2048m' ein.

1voto

Java OOM Heap-Space-Problem kann auch auftreten, wenn Ihre DB-Verbindung Pool voll wurde.

Ich konfrontiert dieses Problem wegen meiner Hikari Connection Pool (wenn auf Spring Boot 2.4.* aktualisiert) war voll und nicht in der Lage, Verbindungen mehr (alle aktiven Verbindungen sind noch anhängig, um Ergebnisse aus der Datenbank abrufen) bereitzustellen.

Das Problem ist, dass einige unserer nativen Abfragen in JPA-Repositories Folgendes enthalten ORDER BY ?#{#pageable} die nach einer Aktualisierung sehr lange braucht, um Ergebnisse zu erzielen.

Entfernt ORDER BY ?#{#pageable} von allen nativen Abfragen in JPA-Repositories und OOM-Heap-Space-Problem zusammen mit Verbindungspool Problem wurde behoben.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X