Как найти происхождение GC_FOR_MALLOC? - PullRequest
4 голосов
/ 15 июня 2011

Я работаю над приложением для Android, которое попадает в бесконечный цикл освобождения GC_FOR_MALLOC:

06-15 11:24:56.685: DEBUG/dalvikvm(118): GC_FOR_MALLOC freed 4136 objects / 374744 bytes in 66ms
06-15 11:24:59.176: DEBUG/dalvikvm(521): GC_FOR_MALLOC freed 9340 objects / 524152 bytes in 645ms
06-15 11:24:59.846: DEBUG/dalvikvm(521): GC_FOR_MALLOC freed 9344 objects / 524328 bytes in 149ms
06-15 11:25:01.535: DEBUG/dalvikvm(521): GC_FOR_MALLOC freed 9346 objects / 524448 bytes in 193ms
06-15 11:25:02.175: DEBUG/dalvikvm(521): GC_FOR_MALLOC freed 9344 objects / 524344 bytes in 126ms

Приложение считывает изображение в формате JPEG через сокет (выделенный поток) и отображает его в imageView.Цикл GC блокирует отображение изображения.

Есть ли решение, чтобы узнать, какая строка или хотя бы какая часть кода выбрасывает сборщик мусора?

Спасибо

1 Ответ

2 голосов
/ 15 июня 2011

Я не уверен, что вы можете получить доступ к виртуальной машине и проверить, почему она выполняет gc все время, но gc обычно выполняется, когда в этом есть необходимость.Вы должны проверить, что использует так много памяти.Это может быть загрузка вашего изображения (это большое изображение?) Или, возможно, что-то еще в вашем приложении.Проверьте этот пост о том, как анализировать использование вашей памяти , и пока вы на нем, проверьте на утечки памяти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...