Question

Mon application se bloque après environ 20 minutes avec le statut 101 (mémoire insuffisante, je crois)

Le débogage avec Instruments - ObjectAlloc et Leaks ne me donne aucun indice. Le graphique ObjectAlloc reste à un niveau constant d'environ 1 million d'octets (1 Mo), tout comme le nombre net d'allocations. Je me suis débarrassé de toutes les fuites.

Je pensais que cela pouvait être lié au nombre de threads, mais leur représentation graphique dans ObjectAlloc indique également qu'ils sont constants.

Quelqu'un peut-il m'indiquer un autre outil ou une autre piste d'investigation?

Était-ce utile?

La solution

Corrigez tout ce que Clang trouve. Analyse statique LLVM Clang

Autres conseils

N'oubliez pas que les objets alloués par le système (et comprenant des éléments tels que les images et les sons) ne sont pas suivis dans Instruments (bien que le premier niveau conserve le nombre, bien sûr). Il est donc possible de charger des images, par exemple, qui ne contribueront pas beaucoup à votre utilisation de la mémoire, mais peuvent drainer beaucoup de mémoire réelle!

Si rien de tout cela ne résonne, vous pouvez essayer l’approche de débogage soustractive - (prendre une copie de votre projet) - découpez des morceaux de fonctionnalité jusqu’à ce que le problème disparaisse ou que vous obteniez la plus petite chose possible qui le reproduise. Cela devrait au moins vous aider à localiser le goulot d'étranglement. Certes, ce sera difficile (a) car vous devrez attendre 20 minutes environ à chaque fois que vous testez (mais si vous faites de cette procédure une procédure en arrière-plan, ce n'est pas si mal) et (b) car la nature des problèmes de mémoire est telle peut ne pas être une cause unique, mais une masse critique de causes plus petites.

Bonne chance!

Mes expériences avec Object Alloc n’ont pas été aussi bonnes. Il ne vous donne pas toujours la mémoire utilisée par votre application.

Utilisez plutôt Object Alloc avec Activity Monitor. Veillez à utiliser le code "Mémoire physique libre". et "Mémoire physique utilisée" options dans le moniteur d'activité. Cela vous indiquera exactement la quantité de mémoire utilisée par votre application.

Qu'entendez-vous par "niveau sympa"? Cela n'augmente-t-il pas avec le temps? Combien de mémoire total? Le téléphone a peut-être besoin de mémoire pour une autre application et la vôtre est un peu trop grosse pour rester en place.

Le code d'erreur 101 signifie que l'iPhone OS force de quitter votre application. Si vous utilisez UIImageViews dans votre application, veillez à gérer la mémoire qui s'y trouve. J'ai constaté qu'une fois que mon application dépassait 10/12 Mo, l'iPhone la terminait.

Si vous n'utilisez pas de vues d'image (ou de grandes images), votre code de fond prend trop de place.

Tout ce que je peux dire, c'est que vous devez examiner votre allocation plus attentivement et gérer les vues que vous gardez en mémoire à tout moment.

Exécutez votre application dans Instruments (Exécuter - > Démarrer avec Performamce Tool - > Leaks) pour voir où votre mémoire est allouée.

J'espère que ça aide!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top