android - 在同一应用程序中,三星 G S9+(Android 8.1 API 26)比摩托罗拉 E2(Android 7.1.2 API 25)使用更多内存
问题描述
这是我为android studio中的内存使用情况拍摄的两张截图:
三星 Galaxy S9+(Android 8.1 Stock API 26)
和
摩托罗拉 E2(Android 7.1.2 Lineage OS 14.1 API 25)
当摩托罗拉 E2 仅约 55mb 时,S9+ 使用约 250mb
此时,应用程序只是在 RecyclerView() 中滚动,其中 S9+ 显示 5 个 ViewHolders(每个都有一个图像约 20kb),而 E2 显示 4 个 ViewHolders(与 S9+ 相同的图像)。
我不确定为什么内存使用量存在巨大差异它与Android版本有什么关系吗?
解决方案
您无法以这种方式比较 RAM 使用情况,而不是使用 GCed 语言。在 Java 和其他 GC 语言中,GC 通常只在系统认为需要它时运行——当它运行不足时。如果它没有运行低,它将不会运行。这意味着大量可以清理的对象仍然在堆上,并且仍然对你不利。唯一公平的比较方法是在每次比较时运行强制 GC。或者更好的是,进行堆转储并仅计算不符合清理条件的对象。
现在可能还有其他原因,例如某些框架对象的实现差异导致内存泄漏。但很可能只是上面的解释。
推荐阅读
- c++ - C ++ QT如何从QMainWindow布局访问QWidget的公共类成员
- javascript - 如何创建多滤镜库
- python - 错误:[WinError 2]在python中使用distutils时系统找不到指定的文件
- python - 具有外键模型的 Django 高效查询集
- c# - 从 Datagridview 到 Excel - 它不保存我的数值
- postgresql - pgAdmin4 - 无法联系 postgresql 应用程序服务器
- python - 如何单击 javascript:void(0) 与 selenium 的链接?
- javascript - 计分器无法正确计算分数
- c - 每当我尝试释放旧内存时,我的程序就会崩溃
- javascript - JavaScript:使用 3 维数组方便吗?