Я пишу приложение, которое имеет
приоритетный сервис, контент-провайдер,
и интерфейс активности, который связывается с
сервис и возвращает список
объекты, использующие AIDL.
Если это всего лишь одно приложение, избавьтесь от AIDL и избавьтесь от провайдера контента. Или, по крайней мере, не используйте их самостоятельно - они предназначены для других приложений. Они добавляют накладные расходы, которые вам не нужны для вещей внутри вашей виртуальной машины.
... что наводит меня на мысль, что память стекает в стек. Это вообще возможно?
Не совсем. Стек основного потока приложения тривиально мал. У других потоков есть стеки, которые могут стать намного больше, но я буду удивлен, если вы потратите 42 МБ таким образом.
Если это так, что я могу сделать, чтобы остановить или
расследовать утечку?
Поскольку вы уже выполнили «пиковое решение» по тестированию без пользовательского интерфейса и определению, что все в порядке, я бы медленно ввел этот интерфейс и посмотрел, когда вы начнете получать проблему. Одной из вероятных проблемных областей будет обновление действия из фонового потока, так что вы можете отключить его и посмотреть, что произойдет.
Поскольку ваша проблема не в самой куче, я предполагаю, что ваша проблема связана с растровыми изображениями или другими вещами, которые часто используют ОЗУ вне кучи. Камера в вашем аватаре - еще один намек в этом направлении. :-) Убедитесь, что вы recycle()
используете свои растровые изображения и тому подобное, и посмотрите, поможет ли это.