J'essaye de charger une image dans la mémoire mais pourrais avoir des problèmes de mémoire puisque j'ai d'autres images chargées. Ces images ont un champ "visible" qui dicte si elles sont visibles ou non. Indépendamment de la visibilité, je les garde en mémoire pour un chargement rapide (quand ils redeviennent visibles).Quelle est la meilleure façon de gérer ce cas "try-error-clean -retry"?
Mais comme j'ai beaucoup d'entre eux en mémoire je veux essayer de charger une nouvelle image et si je rencontre des problèmes de mémoire, libérez les images non visibles et essayez à nouveau. Maintenant, à ce jour, je me sers de ce assez laid (et le mal pour une raison quelconque, je suis sûr) morceau de code:
try {
image = GraphicsUtilities.loadImage(filePath);
} catch (OutOfMemoryError e) {
removeHiddenImageReferences();
try {
image = GraphicsUtilities.loadImage(filePath);
} catch (OutOfMemoryError ee) {
ee.printStackTrace();
JOptionPane.showMessageDialog(parent,
"There is not enought memory to load this image",
"Not enough memory", JOptionPane.WARNING_MESSAGE);
}
}
Ma question est, comment dois-je gérer ce genre de cas? Je pense qu'attraper une exception et récupérer une exception dans la clause catch est mauvais.
merci pour la réponse. J'utiliserais ceci si je devais libérer graduellement la mémoire (peut-être libérer une image cachée à la fois) mais puisque dans mon exemple je libère seulement une fois je pense que c'est un peu exagéré. –