首页 > 解决方案 > Android 分配比垃圾收集快

问题描述

我有一个大型应用程序(2 岁的代码库),它开始从许多用户那里获得 ANR。

我查看了 Android Studio 上的 Profiler,看起来我一直在允许对所有内容进行释放 - 没有循环引用(这并不重要),并且每种对象类型最终都会得到一些释放(关键字EVENTUALLY)。

但是,只是这些对象的释放速度不如它们随着时间的分配速度快。这导致了巨大的总计数累积,例如,使用 30 分钟后总共 300mb,而通常使用 5 分钟后的 120mb。

除了用更干净的实现来彻底检查我的代码之外,我不知道该做什么,这样我就不会大量使用垃圾收集器。还有什么我可以尝试的吗?也许手动调用垃圾收集器或要求 Android 尝试不同的内存管理配置?任何大小的建议都将不胜感激。

标签: androidperformanceandroid-studioprofiler

解决方案


当然你可以手动调用垃圾收集器

System.gc()

您还可以将内存使用情况转储到 中ProfilerAndroid Studio您可以在其中获取分配日志。通过这种方式,您可以识别哪些对象正在占用内存并可以采取必要的措施。


推荐阅读