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 spaceerrore 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.