Процесс system/bin/installd вызывает утечку памяти

При просмотре запущенных задач я заметил утечку памяти в процессе system/bin/installd. После завершения загрузки он начинает работать в фоновом режиме, потребляя 20-30 МБ ОЗУ. Со временем использование ОЗУ постепенно увеличивается, достигая 400 МБ, после чего происходит случайная перезагрузка.

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

Прежде чем я смогу попытаться решить эту проблему, мне нужно точно знать, что это такое system/bin/installd/ что он делает - я не могу найти никакой информации о нем.

Кто-нибудь может помочь?

Характеристики:

  • OnePlus One (с рутом)
  • Mahdi ROM (база CM11), Android 4.4.4 KitKat
  • Сборка № KTU84Q
  • Ядро 3.4.0-Mahdi-One-kk
  • Запуск нескольких модулей Xposed, настройки инициализации и т. д.
Могу я узнать, как вы обнаружили утечку памяти в процессе? Я никогда не знаю, можно ли проверить использование памяти для не-APK.
@ЭндрюТ. Я использую "3C Toolbox Pro"; его диспетчер задач отображает все запущенные процессы. Я настоятельно рекомендую его — это отличное приложение с множеством инструментов для опытных пользователей.

Ответы (1)

/system/bin/installdэто системный демон, участвующий в установке приложений. Системные классы вроде PackageInstallerиспользуют его в своем исполнении.

Эта статья от DZone датируется 2013 годом, но в ней есть несколько советов, которые могут помочь:

PackageInstaller — это приложение по умолчанию для Android для интерактивной установки обычного пакета. PackageInstaller предоставляет пользовательский интерфейс для управления приложениями/пакетами. PackageInstaller вызывает действие InstallAppProgress для получения инструкций от пользователя. InstallAppProgress попросит службу диспетчера пакетов установить пакет через installd. Исходный код доступен в /packages/apps/PackageInstaller.

В сегодняшнем коде Android (например: services/core/java/com/android/server/pm/Installer.java):

 public void onStart() {
    Slog.i(TAG, "Waiting for installd to be ready.");
    mInstaller.waitForConnection();
}

Тот же файл комментирует при выезде frameworks/native/cmds/installd/installd.h(дальше пока не смотрел).

Короче говоря, вам может понадобиться просмотреть исходный код, чтобы узнать больше о installd, в зависимости от того, чем вы занимаетесь.