Android App内存使用问题

时间:2018-01-10 18:19:50

标签: android memory-management emulation

我一直在开发一款简单的记忆游戏应用程序,我今天第一次在手机LG V20上进行了测试。但是,当我在手机上运行它时,android探测器显示了大量使用的内存,导致应用程序在某些转换点崩溃,我不明白为什么。这显示应用程序打开和开始动画,第二个驼峰,和主页本身一样,开场动画只是让思想泡泡一次淡出一个 Imgur enter image description here 然后在模拟的Nexus 5X上运行相同的部分 enter image description here 然后穿过活动,在物理V20上 enter image description here 并在模拟器上 enter image description here 以下是每个活动的样子,level_select enter image description here S1L1 enter image description here 这是我的第一个应用程序,所以我知道它没有很好地优化,甚至模拟器上的较低数字也非常高。但是,我很困惑为什么应用程序占用的内存大约是物理手机上的点数大约是模拟器的5倍。还有为什么模拟器没有显示图形使用的任何内存。非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

这是我的两分钱。不同的手机具有不同的分辨率,因此具有不同的内存消耗。您可以采取一些措施来确保您的应用程序不会导致内存不足异常

  1. 确保使用Glide,Picasso或任何其他图像加载库在应用程序中加载图像。直接或通过布局加载图像会导致内存消耗突然增加
  2. 如果您正在使用动画,请确保在退出动画后进行清理,如果它们涉及无限重复。
  3. 尝试使用较小的图像。一种可能的方法是将.jpg和.png转换为.webp,它们的尺寸要小得多。
  4. 使用Android Studio进行内存转储,查看应用程序中是否存在任何内存泄漏。网上有很多文章可以指导您完成这些工作。例如link
  5. AsyncTasks多次负责导致上下文内存泄漏。尽量不要在asynctask中包含上下文,或者如果你这样做,请确保它可用于GC在操作结束时收集
  6. 即使内存泄漏非常小,它也会增加并最终导致内存不足异常。
  7. 此外,您可以搜索OutOfMemory或内存泄漏以获取有关此内容的更多信息。

答案 1 :(得分:0)

这2部手机(Nexus 5X和LG V20)具有不同的分辨率,这意味着它们将使用不同的资源(我相信XXHDPI与XXXHDPI)。

如果您在应用中使用了大量图片,那么加载大量高分辨率图像可能会导致这种差异。

尝试使用与手机具有相同分辨率的模拟器,看看是否会导致您的问题,或尝试将所有图片缩小。