【问题标题】:How much RAM samsung devices do normally allocate for Android apps?三星设备通常为 Android 应用分配多少 RAM?
【发布时间】:2014-11-24 19:14:21
【问题描述】:

现在我的应用有 2000 次下载和 180 名每日用户。我不相信他们都只使用三星设备。我很困惑 - 我没有任何三星设备,如果你有的话 - 你能告诉我他们通常为 android 应用程序分配多少 RAM 吗?我的应用程序通常在每次 UI 重新加载时消耗 20-22mb +2mb 作为内存泄漏(但用户通常不会这样做超过 2-3 次......) 我在上一个版本中添加了“LargeHeap”(还没有在统计中)。

对于 14500 个会话,这 46 个 OutOfMemory 错误是否很多?还是安卓没问题?

【问题讨论】:

  • 您有 2MB 的内存泄漏,您想知道特定品牌的内存分配吗?错误的优先事项,伙计。
  • 它只是天气应用程序。人们通常不会在多个位置观看天气(因此在大多数情况下,它只会发生一次)。 app中有很多imageViews,要一个个都用对了还是挺麻烦的。
  • "app里有很多imageViews,要全部都用对了还是挺麻烦的。" -- 如果你懒得做,则将它们子类化。

标签: java android memory out-of-memory ram


【解决方案1】:

你问错问题了。您应该尝试弄清楚如何使您的应用程序更少占用内存,而不是尝试为特定供应商/OEM 寻找解决方法。

对于一些指导,这篇文章特别有帮助:Managing Your App's Memory。由于您提到您正在尝试在清单中使用 largeHeap 属性,因此您可能需要阅读文章中的以下 sn-p:

在非常特殊的情况下,您可以通过在清单<application> 标记中将largeHeap 属性设置为"true" 来请求更大的堆大小。如果这样做,您可以调用getLargeMemoryClass() 来估算大堆大小。

但是,请求大堆的功能仅适用于一小部分可以证明需要消耗更多 RAM 的应用(例如大型照片编辑应用)。 永远不要仅仅因为内存不足而需要快速修复就请求大堆。

【讨论】:

  • 谢谢,但这不是我能快速解决的问题。以后一定会处理的。
  • 我不知道为什么这个答案两次被否决,但我不会坚持我的答案,因为我认为这是正确的方法。 OP 不应使用largeHeap 作为解决方法,并且不需要知道三星设备使用的具体内存量来实现工作应用程序。这样做并不能保证适用于所有设备,而且通常是不好的做法。
  • 好吧,直到今天我还确定 android 4.0+ 设备至少分配了 50mb 的 RAM。如果我不知道我的应用程序可以使用多少 RAM,那么我不知道我可以在其中使用哪些图像。我知道泄漏是不好的。我是投票赞成而不是反对的人。
  • 不幸的是,这些天 StackOverflow 上到处都是偷偷摸摸的投票者。 ://
  • @careful7j 你看过this article关于正确缓存/显示位图的信息吗?显示图像视图通常不需要知道堆的大小......相反,它需要知道如何缓存位图,如何将它们缩小到内存消耗较少的大小,当它们不再存在时如何回收它们使用等。这是一个棘手的主题,因为移动设备往往没有那么多内存……但网上有大量文章可能会对您有所帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多