J'écris une application Swing côté client (concepteur de polices graphiques) sur Java 5 . Récemment, je rencontre une java.lang.OutOfMemoryError: Java heap space
erreur car je ne suis pas conservateur sur l'utilisation de la mémoire. L'utilisateur peut ouvrir un nombre illimité de fichiers et le programme conserve les objets ouverts en mémoire. Après une recherche rapide, j'ai trouvé l' ergonomie dans la machine virtuelle Java 5.0 et d'autres disant sur la machine Windows que la taille maximale du tas par défaut de la JVM était 64MB
.
Face à cette situation, comment gérer cette contrainte?
Je pourrais augmenter la taille maximale du tas en utilisant l' option de ligne de commande pour Java, mais cela nécessiterait de déterminer la RAM disponible et d'écrire un programme ou un script de lancement. De plus, augmenter jusqu'à un maximum fini ne résout pas finalement le problème.
Je pourrais réécrire une partie de mon code pour conserver fréquemment des objets dans le système de fichiers (utiliser la base de données est la même chose) pour libérer de la mémoire. Cela pourrait fonctionner, mais c'est probablement beaucoup de travail aussi.
Si vous pouviez me signaler les détails des idées ci-dessus ou certaines alternatives comme la mémoire virtuelle automatique, l'extension dynamique de la taille du segment de mémoire , ce serait parfait.