Attendre simultanées GC bloqué
Quand je lance mon application sur l'émulateur le Logcat montre ceci:
04-22 16:21:30.685: D/dalvikvm(967): GC_CONCURRENT freed 1545K, 20% free 7019K/8720K, paused 78ms+17ms, total 360ms
04-22 16:21:30.685: D/dalvikvm(967): WAIT_FOR_CONCURRENT_GC blocked 143ms
04-22 16:21:31.845: D/dalvikvm(967): GC_CONCURRENT freed 1552K, 20% free 7019K/8720K, paused 116ms+18ms, total 554ms
04-22 16:21:31.845: D/dalvikvm(967): WAIT_FOR_CONCURRENT_GC blocked 268ms
04-22 16:21:32.435: D/dalvikvm(967): GC_CONCURRENT freed 1545K, 20% free 7019K/8720K, paused 75ms+9ms, total 192ms
04-22 16:21:32.435: D/dalvikvm(967): WAIT_FOR_CONCURRENT_GC blocked 73ms
04-22 16:21:32.945: D/dalvikvm(967): GC_CONCURRENT freed 1552K, 20% free 7019K/8720K, paused 75ms+10ms, total 209ms
04-22 16:21:32.945: D/dalvikvm(967): WAIT_FOR_CONCURRENT_GC blocked 70ms
04-22 16:21:33.434: D/dalvikvm(967): GC_CONCURRENT freed 1545K, 20% free 7019K/8720K, paused 78ms+12ms, total 192ms
et cela continue jusqu'à ce que je quitte l'application.Toute suggestion?Grâce
OriginalL'auteur melib | 2013-04-22
Vous devez vous connecter pour publier un commentaire.
Semble que vous êtes en train de créer de nombreux nouveaux objets et de les jeter vite.
Pour WAIT_FOR_CONCURRENT_GC voir celui-ci:
ce n'WAIT_FOR_CONCURRENT_GC bloqué veux dire?
Cela signifie que vous essayez d'allouer de la mémoire (par exemple la création de l'objet) et elle ne rentre pas dans la mémoire. C'est ce que GC_CONCURRENT libéré est causé par. Sa peu habituel de collecte des ordures.
Si vous avez des problèmes de performances, essayez de réutiliser les objets ou les épargner.
OriginalL'auteur luxer
Cela signifie que vous faites trop d'opérations et de beaucoup de mémoire est utilisée. Par conséquent, GC(Garbage collector) est appelée pour libérer de la mémoire.
libéré indique combien de mémoire a été libérée
GC_CONCURRENT Invoquée lorsque le tas est trop grand pour éviter un débordement.
pause 78ms+17ms – indique combien de temps il a fallu à la GC pour terminer la collection.
Reportez-vous
De plus prendre de vidage de mémoire et d'analyser le vidage de l'utilisation de TAPIS de l'outil.
OriginalL'auteur Sunny Kumar Aditya
D'accord surtout avec @luxer, mais je crois que ce n'est pas que vous allouez de trop d'objets, mais vous êtes à consacrer d'énormes objets. Si vous vous référez au lien indiqué par @luxer sur WAIT_FOR_CONCURRENT_GC, vous vous rendrez compte que un deuxième gc est déclenché dans votre application tout en un simultanées gc (qui est généralement déclenché lorsque le tas d'occupation atteint une limite douce) est en cours. La deuxième gc pourrait avoir été déclenché par vous-explicitement ou parce que l'allocation a échoué. Puisque vous n'avez pas indiqué que vous êtes d'appel Système.gc(), je suppose que vos allocations sont défaillants et que le système est en train de faire un gc.
Donc, oui, vous devriez sérieusement envisager la réutilisation de gros objets au lieu de les attribuer à chaque fois. C'est une meilleure pratique, mais si pour une raison quelconque vous êtes incapable de le faire, vous pouvez probablement votre bosse de la taille du segment (par paramètre important segment de mémoire) et qui peuvent aider.
OriginalL'auteur layman
Parfois, il arrive quand vous avez un interminable boucle juste parce qu'une certaine condition est toujours vraie.
Essayer de comprendre s'cette première affaire, comme il arrive surtout à cause de cela.
OriginalL'auteur My God