Sto scrivendo un'applicazione Swing sul lato client (designer grafico di caratteri) su Java 5 . Di recente, sto riscontrando un java.lang.OutOfMemoryError: Java heap space
errore perché non sono conservatore sull'uso della memoria. L'utente può aprire un numero illimitato di file e il programma mantiene gli oggetti aperti in memoria. Dopo una rapida ricerca, ho trovato Ergonomia nella Java Virtual Machine 5.0 e altri che dicevano su una macchina Windows la dimensione massima dell'heap di default di JVM 64MB
.
Data questa situazione, come dovrei affrontare questo vincolo?
Potrei aumentare la dimensione massima dell'heap usando l' opzione della riga di comando su java, ma ciò richiederebbe capire la RAM disponibile e scrivere qualche programma o script di avvio. Inoltre, aumentando fino ad un certo limite finito , alla fine non si sbarazza del problema.
Potrei riscrivere parte del mio codice per rendere persistenti gli oggetti nel file system frequentemente (usare il database è la stessa cosa) per liberare memoria. Potrebbe funzionare, ma probabilmente è anche molto lavoro.
Se potessi indicarmi i dettagli delle idee precedenti o alcune alternative come la memoria virtuale automatica, estendere le dimensioni dell'heap in modo dinamico , sarebbe fantastico.