我有一个相当复杂的应用程序 -
UI Activity 启动一个 Service 并设置 2 路 AIDL 回调,以便两者可以通信。
该服务永远运行(除非在 UI Activity 中点击“关闭”按钮)。
问题是当用户退出Activity时,Activity内存没有释放。- 即使 UI Activity 已关闭,我的应用程序使用的内存量也是相同的。- 即使 UI Activity 已关闭,堆上仍会显示 mapTiles 和其他 UI 废话。
所以我的猜测是服务以某种方式持有对活动的引用。我知道许多关于泄漏活动上下文的文章警告。服务仅通过存储在应用程序范围内的弱引用来引用活动。(扩展应用程序的类)
有什么方法可以找到具体引用活动的内容吗?支配树显示 mapTiles 和 ListView 布局占用了我所有的内存......但我找不到对保持这些东西保持活力的 Activity 的引用。
此外,如果发生 OutOfMemoryException,是否有办法转储 HPROF 堆转储?