android - Android 分配比垃圾收集快
问题描述
我有一个大型应用程序(2 岁的代码库),它开始从许多用户那里获得 ANR。
我查看了 Android Studio 上的 Profiler,看起来我一直在允许对所有内容进行释放 - 没有循环引用(这并不重要),并且每种对象类型最终都会得到一些释放(关键字EVENTUALLY)。
但是,只是这些对象的释放速度不如它们随着时间的分配速度快。这导致了巨大的总计数累积,例如,使用 30 分钟后总共 300mb,而通常使用 5 分钟后的 120mb。
除了用更干净的实现来彻底检查我的代码之外,我不知道该做什么,这样我就不会大量使用垃圾收集器。还有什么我可以尝试的吗?也许手动调用垃圾收集器或要求 Android 尝试不同的内存管理配置?任何大小的建议都将不胜感激。
解决方案
当然你可以手动调用垃圾收集器
System.gc()
您还可以将内存使用情况转储到 中Profiler
,Android Studio
您可以在其中获取分配日志。通过这种方式,您可以识别哪些对象正在占用内存并可以采取必要的措施。
推荐阅读
- django - Django 多对多字段查询
- java - OptaPlanner 中无法解释的 NPE
- angular - 无法在角度 4 中隐藏错误消息
- c# - 使用适用于桌面应用程序 (WPF) 的 Azure AD 实施 SAML SSO
- python - 使用python从文本中提取具有不同格式的所有日期
- r - 如何使用 knn 在 r 中正确使用函数预测?
- javascript - jQuery找到给定类的第一个以下元素?
- rest - 使用 RESTful API 设计通过 FK 删除
- php - 如何从通过 PHP 创建的新图像中查找图像类型
- python-2.7 - 使用 python utf-8 编码显示特殊字符