设备间应用程序内存使用情况不同

3

我在两个不同的设备上运行我的应用程序,并从Android Studio的内存选项卡中检查应用程序分配的内存。当应用程序在三星设备上运行时,分配的内存约为60 MB。当应用程序在摩托罗拉设备上运行时,分配的内存约为40 MB。

是什么导致了内存分配的差异?

设备: 三星Galaxy S4,Android版本为5.0.1 摩托罗拉Moto G2,Android版本为5.0.2


3
首先,每个设备的分辨率都不同(例如,S4= xxhdpi,Moto G2 = xhdpi),这意味着所有的drawable/mipmap都会有不同分辨率版本从你的资产文件夹中加载,所以加载的图像将占用更多的内存 - 尝试在具有相同屏幕密度的手机上运行测试。 - Mark
这可能会给你一些提示 http://developer.android.com/training/displaying-bitmaps/manage-memory.html - VVB
1个回答

5

三星在Android上的自定义UI有额外的库层,这最终会导致应用程序消耗更多的内存。

Moto设备使用原生的Android操作系统。

在两种设备中,变量和对象占用x内存,但是与Moto设备相比,在三星设备中UI元素占用更多内存。

例如:如果原生的Android使用Button类,三星将扩展Button类以创建SamsungButton类,该类将具有附加功能(如点击时的水滴声音)。


在我的情况下,Nexus 5(运行最新更新6.0.1)上我的应用程序占用50MB,而在同样运行6.0.1的Sony Xperia Z5 Compact上则只占用25MB。这种情况的原因是什么? - JustADev
1
可能是因为z5 compact的像素密度较低。720 x 1280像素(~323 ppi像素密度)。nexus 5拥有更好的显示屏,分辨率为1080像素x1920像素,每英寸像素密度为445像素。您的位图在nexus 5中消耗更多内存。我敢打赌您的加载和主屏幕都有高清图像。 - Karan
1
你可以使用内存分析工具来获得更深入的了解。 - Karan
你说得对,我的主屏幕确实有图片。也许这就是导致更多内存使用的原因。你推荐使用哪些内存分析工具呢?除了Android Studio中内置的工具之外? - JustADev
1
我使用 Eclipse MAT。你也可以尝试缩小位图并对其进行缓存/回收以获得更好的性能。 - Karan
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接