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.