Un NSDictionary non libéré
Bonjour à tous,
Je vous présente un nouveau problème :
OU
Quoi que vous utilisiez, essayez donc ça (en remplaçant le chemin si jamais votre fichier XML ne se trouve pas là ).
Ouvrez le moniteur d'activité et voyez la RAM consommée. à‰trange, library est censé être relâché et pourtant...
Retirez le code .. hooo ça ne consomme plus que 6 Mo contre 6+tailleduXML tout à l'heure
À n'y rien comprendre.
Je vous ai attaché le projet, qui, vous le remarquerez, est complètement vide de code... sauf le awake...
Je me suis amusé à changer NSDictionary par NSString... et là , magie, la mémoire RAM consommée retombe bien de "tailleduxml" Mo..
J'espère vous poser une grande colle, parce que là je pige rien !
Je vous présente un nouveau problème :
<br />- (void)awakeFromNib<br />{<br /> NSDictionary* library;<br /> <br /> library = [[NSDictionary alloc] initWithContentsOfFile:[NSHomeDirectory() stringByAppendingPathComponent:@"Music/iTunes/iTunes Music Library.xml"]];<br /> <br /> [library release]; <br /> <br />}<br />
OU
<br />- (void)awakeFromNib<br />{<br /> NSDictionary* library;<br /> <br /> library = [NSDictionary dictionaryWithContentsOfFile:[NSHomeDirectory() stringByAppendingPathComponent:@"Music/iTunes/iTunes Music Library.xml"]]; <br />}<br />
Quoi que vous utilisiez, essayez donc ça (en remplaçant le chemin si jamais votre fichier XML ne se trouve pas là ).
Ouvrez le moniteur d'activité et voyez la RAM consommée. à‰trange, library est censé être relâché et pourtant...
Retirez le code .. hooo ça ne consomme plus que 6 Mo contre 6+tailleduXML tout à l'heure
À n'y rien comprendre.
Je vous ai attaché le projet, qui, vous le remarquerez, est complètement vide de code... sauf le awake...
Je me suis amusé à changer NSDictionary par NSString... et là , magie, la mémoire RAM consommée retombe bien de "tailleduxml" Mo..
J'espère vous poser une grande colle, parce que là je pige rien !
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
rajoutez 4, 5, voir autant de [library release]; que vous souhaitez, l'appli bronchera pas
Instruments indique pourtant le release du dictionary. on le voit facilement avec le graph.
En général, ton application va réclamer de la mémoire au système quand tu vas faire une allocation dynamique. Mais quand tu auras libéré la mémoire, ton application ne va pas forcément (même rarement) rendre la mémoire au système directement. Il va la garder à lui car tu vas sûrement la réclamer pour d'autres allocations.
De ce qu'on a testé avec Louka, même avec plusieurs fichier chargé on a le même espace occupé en mémoire. Du coup je me demande, est-ce qu'il y a du cache ? ça parait logique vu le travail de traitement pour le chargement d'un plist en dico mais ce n'est pas précisé dans la doc.