gpt4 book ai didi

android - Android 设备与模拟器上垃圾收集器行为的差异

转载 作者:太空宇宙 更新时间:2023-11-03 11:16:33 24 4
gpt4 key购买 nike

我正在模拟器上测试我的应用程序的内存使用情况。问题是在模拟器上,应用程序堆不断增长,只有一点点资源被释放。如果没有进行收集,则会在大分辨率屏幕上导致 OutOfMemory 异常。

我下载了 Sony SDK,并且有一个适用于分辨率为 1080x1920 且默认堆为 64MB 的 Xperia Z 的模拟器配置。我认为该分辨率的堆大小很小,因为我的应用仅在启动时使用 40MB。但是在我的手机上它使用了 15MB 的 64MB(分辨率 540x960)。 所以这个非常小的堆大小(可能不是真的?)+ GC 行为导致 OutOfMemory 非常快。

在真实设备上(我只在我的设备上测试过),GC 工作得很好,它释放不再使用的资源,但我真的无法预测这是否适用于其他手机。

我应该忽略 GC 在我的模拟器上的工作方式还是我的应用程序的问题?

最佳答案

模拟器上不断增长的堆表明在某些时候您有内存泄漏。

当您在不同的应用程序之间发送 Intent 时,它们非常常见(例如,从图库中选择图像)。大多数设备都可以毫无问题地处理此类泄漏。

堆增长的另一个原因:低效的内存操作。这意味着有时你会要求太多内存(例如,你从图库中选择了 5M 图像,为其创建了 inpuststream 并将其作为位图保存在内存中,因此你要求 15+M 模拟器将只显示高堆增长,但大多数设备会显示错误)。

如果您看到堆增长 - 分析您的内存使用情况并检测泄漏。 Link
如果您没有检测到任何异常情况,您几乎可以安全地忽略堆警告。

注意:堆显示提供的空间,未使用。

关于android - Android 设备与模拟器上垃圾收集器行为的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15888084/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com