Estou escrevendo um aplicativo Swing do lado do cliente (designer de fonte gráfica) em Java 5 . Recentemente, estou tendo java.lang.OutOfMemoryError: Java heap space
erro porque não estou sendo conservador quanto ao uso de memória. O usuário pode abrir um número ilimitado de arquivos, e o programa mantém os objetos abertos na memória. Após uma rápida pesquisa, encontrei Ergonomia na Java Virtual Machine 5.0 e outros disseram na máquina Windows que a JVM padroniza o tamanho máximo de heap como 64MB
.
Diante dessa situação, como devo lidar com essa restrição?
Eu poderia aumentar o tamanho máximo do heap usando a opção de linha de comando para java, mas isso exigiria descobrir a RAM disponível e escrever algum programa ou script de inicialização. Além disso, aumentar para um máximo finito não acaba com o problema.
Eu poderia reescrever parte do meu código para persistir objetos no sistema de arquivos com freqüência (usar o banco de dados é a mesma coisa) para liberar a memória. Pode funcionar, mas provavelmente também é muito trabalhoso.
Se você puder me indicar detalhes das idéias acima ou algumas alternativas, como memória virtual automática, estender o tamanho da pilha dinamicamente , isso será ótimo.