Android 可能的内存泄漏
我运行了这个命令Android 可能的内存泄漏,android,memory-leaks,out-of-memory,Android,Memory Leaks,Out Of Memory,我运行了这个命令adb shell dumpsys meminfo,得到了 Objects Views: 74 ViewRootImpl: 1 AppContexts: 3 Activities: 1 Assets: 4 AssetManagers: 4 Local Bind
adb shell dumpsys meminfo
,得到了
Objects
Views: 74 ViewRootImpl: 1
AppContexts: 3 Activities: 1
Assets: 4 AssetManagers: 4
Local Binders: 11 Proxy Binders: 20
Death Recipients: 0
OpenSSL Sockets: 2
SQL
MEMORY_USED: 0
PAGECACHE_OVERFLOW: 0 MALLOC_SIZE: 0
在按下后退按钮并再次启动应用程序后,只需重复此过程几次,即可获得:
Objects
Views: 1408 ViewRootImpl: 8
AppContexts: 14 Activities: 12
Assets: 5 AssetManagers: 5
Local Binders: 13 Proxy Binders: 32
Death Recipients: 0
OpenSSL Sockets: 1
SQL
MEMORY_USED: 0
PAGECACHE_OVERFLOW: 0 MALLOC_SIZE: 0
请注意,活动和AppContexts只需一次又一次地启动应用程序,它们就会不断增加。这是否意味着我有内存泄漏
我阅读了这份文件,其中说:
AppContext和Activities应用程序上下文和活动的数量
当前位于进程中的对象。这对我们来说很有用
快速识别不能成为垃圾的泄漏活动对象
由于它们上的静态引用而收集,这是常见的。这些
对象通常有许多与其相关联的其他分配,并且
因此,这是跟踪大型内存泄漏的好方法
这似乎是内存泄漏。为了确保这一点,您可以在每次迭代测试之后强制运行垃圾收集器(您可以使用DDMS)。这样做,您将确定这是内存泄漏 之后,您可以使用MAT(内存分析器工具-)来识别导致泄漏的参考
祝你好运 Android内存泄漏的最常见原因是保留
- 活动
- 上下文
- 位图/可绘制
- 资源
- 回调
- 静态变量
观察如何使用内存分析器工具和堆转储查找内存泄漏的优秀分析 运行手动垃圾收集器会将此数量减少到1。所以我想这不是内存泄漏。