Je développe une application iPhone qui utilise principalement le carnet d'adresses et la base de données. Après avoir récupéré environ 3000 contacts du carnet d'adresses, j'attache des étiquettes de chaîne aux contacts (5 pour chaque). Je sauvegarde mes tags dans la base de données.Fuites de mémoire causées par CoreFoundation Framework
Pour les tests de charge, j'ai ajouté 10 000 étiquettes à l'application. Mais lors du test de charge de mon application, j'ai observé des fuites de mémoire qui n'étaient pas liées au code de l'application mais représentaient un ensemble d'instructions. Aussi Instruments a montré Fondation comme la bibliothèque responsable de la fuite (utilisation étendue de NSString
, NSDictionary
, NSArray
qui appartient au cadre de la Fondation). Mon application se bloque après 10 à 15 minutes d'utilisation. Le rapport de crash mentionne que l'application a planté en raison d'une mémoire insuffisante.
Le profilage de la mémoire à l'aide de CLANG n'affiche aucune fuite. Comment puis-je résoudre ces fuites de mémoire? Ces fuites sont-elles le véritable responsable de l'accident? Y a-t-il d'autres outils disponibles pour vérifier les fuites de mémoire?
Cela peut être un problème d'auto-libération. Cela arrive-t-il encore si vous le faites par lots? Autrement dit, dans différentes itérations du runloop? Peut-être emballer l'opération avec sa propre piscine. – Eiko
Oui, j'ai essayé de vider le pool de publication automatique une fois que l'application reçoit un avertissement de la mémoire, mais la vidange de la piscine ne fait également aucun bien. – Aditya
Vous devriez savoir si les fuites sont le coupable, combien de mémoire les instruments disent-ils que vous fuyez? – hooleyhoop