我有一个大型应用程序(使用2年的代码库),并且开始从许多用户那里获取ANR。
我查看了Android Studio上的探查器,好像我一直在允许所有内容的释放—没有循环引用(这并不重要),每个对象类型最终都得到了一些释放(关键字 EVENTUALLY )。
但是,只是这些对象的释放速度没有它们随着时间的分配而快。这导致巨大的总数累积,例如使用30分钟后总计300mb,而通常使用5分钟则只有120mb。
除了用更干净的实现检查代码之外,我不知道该怎么做,这样我就不会大量使用垃圾收集器。还有什么我可以尝试的吗?也许是手动调用垃圾收集器,还是要求Android尝试不同的内存管理配置?任何建议,无论大小,都将不胜感激。
答案 0 :(得分:1)
当然,您可以通过以下方式手动调用垃圾收集器
System.gc()
您还可以在Profiler
的{{1}}中转储内存使用情况,您将在其中获得分配日志。这样,您可以确定哪些对象正在占用内存,并可以采取必要的措施。