我有一个大型应用程序(已有2年的代码库),它开始从许多用户那里获得ANR。
我查看了Android Studio上的Profiler,它看起来像是我一直在允许对所有东西进行释放——没有循环引用(这并不重要),每个对象类型最终都会得到一些释放(关键字) 最后 ).
然而,只是这些对象的释放速度不如它们随着时间的推移被分配的速度快。这会导致总容量的巨大增加,例如,从通常的120mb(仅使用5分钟)增加到30分钟后的300mb。
我不知道该怎么做,除了用更干净的实现彻底检查我的代码,这样我就不会大量使用垃圾收集器。还有什么我可以试试的吗?也许是手动调用垃圾收集器,或者让Android尝试不同的内存管理配置?任何大大小小的建议都将不胜感激。
当然,您可以通过以下方式手动调用垃圾收集器:
System.gc()
此外,还可以将内存使用情况转储到 Profiler 属于 Android Studio ,您可以从中获取分配日志。通过这种方式,您可以识别哪些对象正在消耗内存,并可以采取必要的措施。
Profiler
Android Studio