Estoy escribiendo una aplicación Swing del lado del cliente (diseñador gráfico de fuentes) en Java 5 . Recientemente, me encuentro con un java.lang.OutOfMemoryError: Java heap space
error porque no estoy siendo conservador en el uso de la memoria. El usuario puede abrir un número ilimitado de archivos, y el programa mantiene los objetos abiertos en la memoria. Después de una investigación rápida, encontré Ergonomics en la máquina virtual Java 5.0 y otros que dicen en la máquina Windows que el JVM tiene el tamaño máximo de almacenamiento dinámico predeterminado 64MB
.
Dada esta situación, ¿cómo debo lidiar con esta restricción?
Podría aumentar el tamaño máximo de almacenamiento dinámico utilizando la opción de línea de comandos para Java, pero eso requeriría averiguar la RAM disponible y escribir algún programa o script de inicio. Además, aumentar a un máximo finito no elimina el problema en última instancia .
Podría reescribir parte de mi código para persistir objetos en el sistema de archivos con frecuencia (usar la base de datos es lo mismo) para liberar la memoria. Podría funcionar, pero probablemente también sea mucho trabajo.
Si pudiera señalarme los detalles de las ideas anteriores o algunas alternativas como la memoria virtual automática, extender el tamaño del montón dinámicamente , sería genial.