2016-05-14 6 views
0

Я построил механизм наблюдения, когда объект получает собранный мусор, передавая слабую ссылку на него. Каждые несколько секунд он регистрирует все объекты, которые были переданы ему, и не являются нулевыми.Android - это утечка памяти?

Я сделал это, чтобы наблюдать, когда контекст определенной деятельности становится нулевым, чтобы убедиться, что у меня нет утечки памяти.

Итак, с помощью этого инструмента я заметил, что когда я нажму, и действие закончено, контекст активности не будет аннулирован. Если я вызову GC из монитора устройства, или если я перемещаюсь по другим видам деятельности, это в конечном итоге приведет к сбою.

Я думал, что это должно быть немедленно аннулировано. Означает ли это утечку памяти или это то, о чем я должен беспокоиться?

+0

Нет, вероятно, потому, что он перемещен в кеш памяти, поэтому всякий раз, когда это пространство памяти требуется, GC собирает его и удаляет, чтобы сделать больше места. – Omar

+2

[Leakcanary] (https://github.com/square/leakcanary) - действительно хорошая и простая в использовании библиотека для поиска таких проблем. –

+0

Это выглядит интересно ... Я попробую. – Anonymous

ответ

2

Проверьте монитор памяти и просмотрите графики free и allocated во время навигации по приложению. Вы увидите, что график allocated уменьшается время от времени, чаще всего, когда он приближается или будет превышать верхнюю часть графика free. Именно тогда происходит сбор мусора.

Я думал, что это должно быть немедленно аннулировано. Означает ли это утечку памяти или это то, о чем я должен беспокоиться?

Нет, это не должно быть немедленно отменено, но только при инициировании GC.