У меня странное поведение памяти в приложении для Android, которое я разрабатываю. Приложение работает нормально, но если я смотрю на «диспетчер задач» на Android, например, на диспетчер задач Samsung SII или приложение «Memory Usage» на Nexus 7, это показывает, что при использовании приложения объем используемой памяти быстро растет к сумасшедшей сумме, например, сотням мегаданных (600 ~ 700 МБ на Nexus 7). Затем он может упасть до 200 МБ, снова расти и т. Д.Странное поведение памяти в приложении для Android
Сначала я подумал, что у меня плохая утечка памяти, и начал искать проблему в Eclipse Memory Analyzer (MAT), как это объясняется в этом excellent video. Но проблема в том, что отсюда все выглядит нормально. Я не нашел дублирующего экземпляра активности или чего-либо еще, что могло бы вызвать утечку, а количество использованной памяти было намного меньше. Проблема также не появляется в сообщениях GC. Таким образом, я могу иметь использование 600MB сообщили в диспетчере задач, и что-то подобное в LogCat:
01-29 12:05:44.511: D/dalvikvm(6044): GC_FOR_ALLOC freed 3930K, 24% free 28959K/38096K, paused 17ms, total 17ms
с суммой кучи никогда не будет выше 50 ~ 60MB (который может быть нормальным, потому что есть много фотографий в приложение). Числа в матче совпадают.
Я хотел бы убедиться, что есть утечка памяти или нет в моем приложении. Даже если сообщения GC и MAT не сообщают о проблемах, мне очень странно, что диспетчеры задач сообщают о таком высоком использовании памяти. Может, кто-то здесь уже столкнулся с таким странным поведением и мог дать мне понять, что происходит?