Bonjour,

Au cours d’un projet que je réalise je dois charger des images en mémoire (pour ensuite les afficher) que je stocke dans une Hashtable. Cependant lorsque je vide la Hashtable il apparait une fuite de mémoire qui se traduit par l’augmentation de la catégorie « non-Java object » en analysant la mémoire avec le DDMS.

Pour comprendre l’origine du problème, j’ai réalisé un petit programme dont l’algorithme simplifié est ci-dessous :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
while(true)
{
    i = 1
    Hashtable vidée
    Chargement de i images dans la Hashtable
    i++
}
En analysant la mémoire avec la Hashtable il apparait pendant un certain temps que l’opération se déroule bien puisque la catégorie « 1-byte array » augmente puis diminue suivant le nombre d’images en chargées.

Par contre, lorsque la catégorie « 1-byte array » dépasse environ 45 Mo et lorsque la Hashtable est vidée alors la catégorie « non-Java object » se remplie, ce qui mène à ma fuite de mémoire.

A noter qu’au moment où la Hashtable est vidée, chaque image est recyclé et est mis à l’état null.

Ce qui mène maintenant à ma question : Est-ce qu’une personne comprend l’origine de mon problème ?

En vous remerciant d’avance !