Maison > Questions et réponses > le corps du texte
问题描述:app 出现内存偏高的问题,app 是一个展示图片居多的app,浏览多个图片list 页以后,内存最高峰值跑到了150m,然后app 出现了闪退;
问题:
① 怎么能够避免内存偏高的问题?
② 如果不能避免那么怎么降低内存偏高呢?
③ 如果上面两个问题都不能解决,那么出现内存偏高的时候怎么处理可以避免闪退呢?
阿神2017-04-18 09:20:33
Veuillez vous assurer d'essayer le mode de sortie réel de l'appareil pour les tests
Veuillez vous assurer qu'il n'y a pas de fuite de mémoire
ringa_lee2017-04-18 09:20:33
Comme mentionné ci-dessus, vérifiez d'abord s'il y a une fuite de mémoire.
1. Quelle est la cause du crash ? Si vous ne voyez pas le journal, vous ne pouvez pas être sûr que cela soit dû à une mémoire élevée.
2. Si vous parcourez la liste des images, vous pouvez utiliser SDWebImage ou similaire pour mettre en cache les images, définir la limite supérieure de la mémoire utilisée par le cache et réutiliser la table, ce qui n'utilisera pas beaucoup de mémoire. .
天蓬老师2017-04-18 09:20:33
Si trop de photos sont affichées et que la mémoire augmente, vérifiez d'abord si les photos ont été publiées. Dans des circonstances normales, les images ne sont pas publiées à temps.
PHP中文网2017-04-18 09:20:33
Si la mémoire devient soudainement élevée après une certaine opération et reste stable ou continue d'augmenter, cela peut être fondamentalement déterminé comme étant une fuite de mémoire.
Lorsque vous évaluez une fuite de mémoire, vous devez d'abord déterminer où dans le code la fuite de mémoire se produit.
Deuxièmement, si elle est causée par des images, cela peut être dû au fait que les images demandées par le réseau n'ont pas de local ; cache;
Troisièmement, faites attention aux requêtes réseau, aux opérations de base de données et à la publication des classes et sous-classes UIView.
Enfin, vous pouvez déboguer le projet dans XcodeProduct->Profile
Une fois la compilation terminée, appelez Instruments et utilisez Leaks pour afficher les fuites de mémoire.
PHP中文网2017-04-18 09:20:33
Une optimisation d'image plus courante peut également être que les images dans les données d'origine sont trop volumineuses, ce qui entraîne une augmentation de la mémoire. Il est recommandé d'utiliser des miniatures dans les listes.
迷茫2017-04-18 09:20:33
Effectuez quelques opérations de libération raisonnables pour ouvrir de l'espace lors de l'utilisation.
ringa_lee2017-04-18 09:20:33
Je pense que les images sur les cellules qui glissent hors de l'écran ne sont pas libérées. De manière générale, les cellules qui glissent hors de l'écran seront libérées-->Le contenu de la cellule est libéré-->UIImageView. est publié--> Ensuite, l'UIImage est libérée et vérifie s'il existe un lien dans la chaîne de publication qui n'a pas été publié. Il est plus probable que votre objet UIImage soit référencé ailleurs, par exemple stocké dans NSArray, par exemple dans NSCache. Libérer signifie sauvegarder cet objet sans aucune référence forte