Je suis en train d'écrire un côté client application Swing (graphique concepteur de la police) sur Java 5. Récemment, je suis en cours d'exécution dans "java.lang.OutOfMemoryError: Java heap space" erreur parce que je ne suis pas d'être prudente sur l'utilisation de la mémoire. L'utilisateur peut ouvrir un nombre illimité de fichiers, et le programme garde le ouvert les objets dans la mémoire. Après une rapide recherche, j'ai trouvé l'Ergonomie dans la version 5.0 de la Machine Virtuelle Java et les autres disent sur la machine Windows, la JVM par défaut max taille de segment de mémoire que de 64 mo.
Compte tenu de cette situation, comment dois-je faire avec cette contrainte?
Je pourrais augmenter le max de segment de taille en utilisant l'option de ligne de commande pour java, mais cela nécessiterait de déterminer la quantité de RAM disponible et l'écriture de lancement du programme ou d'un script. En outre, l'augmentation de certains finis max n'est pas en fin de compte se débarrasser de la question.
Je pourrais réécrire certains de mon code pour conserver les objets de système de fichiers fréquemment (à l'aide de la base de données est la même chose) pour libérer de la mémoire. Il pourrait fonctionner, mais il est sans doute beaucoup trop de travail.
Si vous pouviez m'indiquer les détails de ci-dessus des idées ou des solutions de rechange telles que le réglage automatique de la mémoire virtuelle, l'extension de la taille du segment de manière dynamique, qui sera grande.