【问题标题】:App Memory Usage differs between Devices设备之间的应用程序内存使用情况不同
【发布时间】:2016-01-25 14:38:05
【问题描述】:

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

是什么导致内存分配出现这种差异?

设备: 三星 Galaxy S4 5.0.1 Android 版本

摩托罗拉 Moto G2 5.0.2 Android 版

【问题讨论】:

  • 每个设备上的分辨率一开始就不同(S4 = xxhdpi,Moto G2 xhdpi),这意味着所有可绘制/mipmaps 将具有与您的资产文件夹不同的分辨率版本,因此加载的图像将占用更多内存 -尝试在相同屏幕密度的手机上运行测试。

标签: android memory-management android-memory


【解决方案1】:

三星为其在 Android 上的自定义 UI 提供了额外的库层,这最终会导致应用消耗更多内存。

Moto 设备具有库存/原生 Android。

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

示例:如果股票 android 使用 Button 类,Samsung 将扩展 Button 类以使 SamsungButton 类具有附加功能(如点击时的水滴声)。

【讨论】:

  • 在运行最新更新 (6.0.1) 的 Nexus 5 上,我的应用消耗 50MB,而在运行 6.0.1 的 Sony Xperia Z5 Compact 上消耗 25MB 对我来说是什么原因?跨度>
  • 也许您正在使用该应用程序的不同功能。它也与您在应用程序上所做的事情有关。例如,简单的 io 操作可能对内存的占用较少,但对巨大的结构进行排序会占用更多的内存。您确定设备上的应用使用情况相同吗?
  • 可能是因为 z5 compact 的 ppi 较低。 720 x 1280 像素(约 323 ppi 像素密度)。 nexus 5 以每英寸 445 像素的 PPI 显示 1080 像素 x 1920 像素的效果更好。你的位图在nexus 5中消耗更多内存。我敢打赌你的加载和主屏幕有高清图像
  • 您还可以使用内存分析器工具获得更好的洞察力
  • 我使用 Eclipse MAT。您还可以查看缩小位图并缓存/回收它们以获得更好的性能
猜你喜欢
  • 2011-12-27
  • 2011-03-09
  • 2023-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-28
相关资源
最近更新 更多