TAS de CORRUPTION de MÉMOIRE DANS dlmalloc ou dlfree et SIGSEGV erreurs dans Android ICS 4.0
Puisque je ne pouvais pas trouver quelqu'un signalé ce comportement avant j'ai pensé à poster le problème et ma solution ici, de sorte qu'il peut aider d'autres personnes qui ont ce problème. Notre app a fait de l'excellent travail sur les périphériques avant de l'ICS. Nous avons testé notre application sur le Galaxy Nexus et le ICS émulateur et vu bizarre, le processus se bloque du genre suivant:
TAS de CORRUPTION de MÉMOIRE DANS dlmalloc
TAS de CORRUPTION de MÉMOIRE DANS dlfree
signal 11 (SIGSEGV), faute addr deadbaad
Le problème est que les accidents survenus chez les indigènes de l'espace, donc il n'y avait pas d'auto code écrit qui a touché directement. Puisque nous nous occupons beaucoup d'images dans les listes et le système alloue des bitmaps pour ceux qui la seule chose qui me venait à l'esprit était une mauvaise manutention de bitmap. Nous avons suivi toutes les meilleures pratiques dans le web et nous a même aidé à la GC de collecter des ressources inutiles en appelant bitmap.recycle()
. De toute façon, pour une raison inconnue, l'application s'est écrasé en permanence sur Android ICS 4.0.
OriginalL'auteur MarioB. | 2011-12-08
Vous devez vous connecter pour publier un commentaire.
Après quelques recherches, j'ai supprimé l'appel à
recycle()
et tout fonctionne très bien maintenant. Il semble que le garbage collector dans ICS déjà efface les images correctement. Notre appel àrecycle()
a provoqué le système pour tenter de libérer la mémoire dans l'espace originaire, mais la mémoire a déjà été autorisées par le système. En quelque sorte le mauvais accès à la mémoire s'est produite et que le système s'est écrasé. Donc, si vous êtes à la programmation pour Android ICS 4.0 et que vous rencontrez ces problèmes, vous pourriez vouloir essayer sans le recyclage de vos bitmaps explicitement.J'ai eu le même problème et la suppression de l'appel à
recycle()
effectivement le travail.J'ai eu le même problème, et la suppression de
Bitmap.recycle()
le fixer. Sans un utile journal, c'était vraiment difficile de trouver ce qui cause le problème.Merci @MarioBOriginalL'auteur MarioB.
Si vous compilez votre application contre ICS-là, il n'est pas nécessaire d'appeler explicitement à recycler que ce sera la cause de signal 11 (SIGSEGV) erreur.
Si vous écrivez une réponse que des copies de quelqu'un d'autre à la réponse, s'il vous plaît essayez d'ajouter un peu de viande, comme un lien vers la documentation qui prouve l'affirmation.
OriginalL'auteur Apirak Lunla