Skip to content

Постоянно увеличивается потребление нативной памяти MapView #418

@Kudlayra

Description

@Kudlayra

Подскажите пожалуйста, что можно сдеалать с такой проблемой?

Утечка нативной памяти при возврате к фрагменту с MapView

Описание: В приложении используется фрагмент с MapView. При переходе с этого фрагмента на следующий экран и последующем возврате обратно наблюдается постепенное увеличение потребления нативной памяти. Даже после запуска сборщика мусора (GC) память не освобождается полностью.

В демонстрационном примере рост памяти незначителен, но в реальном проекте, где на карту добавляются объекты (маркеры, полигоны и т.д.), увеличение становится существенным и в конечном итоге приводит к крашу приложения из-за нехватки памяти.

https://github.com/Kudlayra/MapLeak

🔁 Шаги для воспроизведения:

1. Открыть приложение

2. Запустить профайлер памяти в Android Studio

3. Нажать кнопку "Next" для перехода на следующий экран

4. На новом экране нажать кнопку "Previous" для возврата к фрагменту с MapView

5. Повторить шаги 3 и 4 многократно, наблюдая за графиком нативной памяти(20-30 раз достаточно, чтобы увидеть прирост в потреблении памяти)

📊 Ожидаемое поведение:
После возврата к фрагменту с MapView нативная память должна освобождаться корректно, без накопления.

🧪 Фактическое поведение:
Память постепенно увеличивается, GC не очищает ее полностью. Если первом открытии расходуется 50 мб, то после многократного возврата к экрану с MapView можно получить краш от нехватки памяти.

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

Пока что исправил эту проблему вызовом у родительского контейнера, в котором находится MapView, метод removeAllViews() в колбэке onDestroyView() фрагмента.

Image

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions