Ich schreibe eine clientseitige Swing- Anwendung (Graphical Font Designer) auf Java 5 . Vor kurzem bin ich auf einen java.lang.OutOfMemoryError: Java heap space
Fehler gestoßen, weil ich bei der Speichernutzung nicht konservativ bin. Der Benutzer kann eine unbegrenzte Anzahl von Dateien öffnen, und das Programm speichert die geöffneten Objekte im Speicher. Nach einer kurzen Recherche fand ich Ergonomie in der 5.0 Java Virtual Machine und anderen, die auf einem Windows-Computer sagten, die JVM sei standardmäßig die maximale Heap-Größe 64MB
.
Wie soll ich in dieser Situation mit dieser Einschränkung umgehen?
Ich könnte die maximale Größe des Heapspeichers mithilfe der Befehlszeilenoption für Java erhöhen , aber dazu müsste der verfügbare Arbeitsspeicher ermittelt und ein Startprogramm oder ein Skript geschrieben werden. Außerdem wird das Problem letztendlich nicht beseitigt, wenn man es auf ein endliches Maximum erhöht .
Ich könnte einen Teil meines Codes neu schreiben, um Objekte häufig im Dateisystem zu speichern (die Verwendung der Datenbank ist dasselbe), um den Speicher freizugeben. Es könnte funktionieren, aber es ist wahrscheinlich auch viel Arbeit.
Wenn Sie mich auf Details der oben genannten Ideen oder auf Alternativen wie den automatischen virtuellen Speicher hinweisen könnten , der die Größe des Heapspeichers dynamisch erweitert , wäre das großartig.