Android:内存分配失败

20

我正在尝试创建一个拥有2047 MB RAM的模拟器。 当我运行它时,我遇到了以下错误:

[2011-02-22 14:24:14 - Emulator]
[2011-02-22 14:24:14 - Emulator] This application has requested the Runtime to terminate it in an unusual way.
[2011-02-22 14:24:14 - Emulator] Please contact the application's support team for more information.
[2011-02-22 14:24:26 - Emulator] Failed to allocate memory: 8

我知道降低数字可以使它运行。但是我更希望有更多的内存,以便我可以测试我正在开发的游戏。我假设有更多的内存,游戏会运行得更快...

有人在模拟器上获得了2047 MB的内存吗?如果有,是怎样实现的?你使用了什么设置?在电脑上是否做了特殊的更改?

我使用 Windows 7 64位系统,已更新到最新的Android SDK。此外,我有超过8GB的可用内存。我有一个设备(摩托罗拉里程碑)可以进行测试,但由于它是基于网络的游戏,除了我的手机外,我需要至少另一个客户端(希望使用模拟器)一起运行。


没听说过有2GB RAM的Android设备,那么制作这样一个模拟器有什么意义呢? - Egor
正如我之前提到的,我正在尝试运行一个游戏。我认为分配更多的内存会使游戏运行得更快(例如更快地渲染屏幕/发送数据包)。如果2047MB的内存不合理,我不明白为什么开发人员一开始允许这样做。 - f20k
你可以轻松地摆脱它,查看我的帖子https://dev59.com/cGXWa4cB1Zd3GeqPOpsA#14851626 - Furqan
这对我有用 - https://dev59.com/v2w05IYBdhLWcg3weBru#7249408 - Khobaib
@Egor 我拥有一台2GiB的安卓手机。你听起来像那些说过没人会需要512k的家伙! - Sinthia V
13个回答

20

加速模拟器的解决方案:

http://androiddevnotes.com/2011/03/08/1299521520000.html

使我的游戏运行速度更快,可与手机质量相媲美。

-- 更新 08/24/12 --

我看到人们仍然在这里评论这个答案,我对这个问题进行了更多的研究。现在给大家呈现我的研究结果。

注意: 这些测试是在我的电脑上运行的,您的电脑可能会有所不同。

  1. 使用属性“设备 RAM 大小”= 2048 运行 Android 2.2 (armeabi) 模拟器将失败,就像以前一样。
  2. 使用属性“设备 RAM 大小”= 2048 MB 运行 Android 2.2 (armeabi) 模拟器将通过,但实际上如果您检查设备上的 RAM,则大约为 128 MB。
    • 检查1: 设置 > 应用程序 > 运行服务 - 将屏幕底部的所有数字相加
    • 检查2: 在 adb shell 中运行以下命令:cat /proc/meminfo/ 并注意 MemTotal 字段
  3. 使用属性“设备 RAM 大小”= 2048 运行 Android 4.1 (armeabi-v7) 模拟器将可以工作,但实际上如果您检查设备上的 RAM,则大约为 512 MB。
    • 检查1: 设置 > 应用程序 > 运行选项卡 - 将屏幕底部的所有数字相加
    • 检查2: 在 adb shell 中运行以下命令:cat /proc/meminfo/ 并注意 MemTotal 字段
  • 使用属性“设备内存大小”= 2048 MB,可以运行一个 Android 4.1 (armeabi-v7) 模拟器,但结果与第3种情况相同。
  • 结论

    按照下面的一些评论中提到的添加'MB'可能允许启动您的设备,但实际上它并没有2GB的RAM。即使使用4.1模拟器,RAM大小也只有512 MB。

    建议

    请使用真实设备进行测试。


    7
    实际上,这可能有两个原因。
    1. 您的本地计算机没有足够的RAM可分配给模拟器。
    2. 您在“设备RAM”值字段中没有输入MB...如果您写512,会失败,而512MB将可行。
    - grobartn
    @grobartn 1. 如我在开篇所说,我拥有超过8GB的RAM(确切地说是12GB)。 2. 您可以在硬件属性中指定设备RAM大小。描述中说明整数以兆字节为单位。例如,加上“MB”是不必要的。 - f20k
    只是评论一下,让大家知道,f20k不正确,添加MB使我的模拟器工作了,非常感谢@grobartn。 - Max Ehrlich
    事实上,模拟器对MB是未知的,因此它会回退到一个默认值,这个值要低得多。这就是为什么它能够工作的原因。你也可以写"foo"。 - Daniel Hilgarth
    我只想让你知道,你回答中的链接现在已经失效了。 - adeady
    显示剩余2条评论

    17

    我也遇到了这个错误。请使用512内存。


    如果你正在寻找真正的模拟器支持和调试等功能,这是最好的方法 - 只需减少模拟器内存即可停止崩溃。在我的 MacBook Air 上,配备了 4GB 的 RAM,将 RAM 设置为 1024 时,它可以正常运行;而在我从工作中使用的运行 Win7 的 Dell 笔记本电脑上,配备了 4GB 的 RAM,必须将其降至 512... 嗯。 - AndrewPK

    13

    我在升级Android ADK工具到20后也遇到了这个错误信息(尽管我有足够的RAM)。无论如何更改“设备RAM大小”属性都没有帮助(无论是更高还是更低或者加上“MB”)。

    对我有效的方法是在命令行中运行模拟器并在那里指定RAM数量(在我的情况下少于默认值); 例如:

    emulator -memory 512 -avd my_avd
    

    这是我让AVD运行的唯一方法。谢谢。 - Iraklis
    两天后...唯一的解决方案...谢谢 - Kartihkraj Duraisamy

    12
    在“运行配置”窗口中添加参数-memory 512。参考截图如下:

    Run Options


    5
    解决方法是前往位于C盘用户文件夹中的.android文件夹中特定AVD的配置文件进行编辑,将RAM设置为1024 MB而非1024。
    问题在于MB选项不存在。

    3

    我曾经遇到同样的问题,但后来找到了解决方法。问题出在我为虚拟机指定的内存大小上,它默认是1024MB,现在我将其改为512MB,这样就可以工作了;尽管我的电脑有8GB的RAM。


    2

    编辑设备设置并将RAM分配更改为较低的数字。如果它是1024或更高,请将其减少到512MB或256MB。您可以在“编辑Android虚拟设备(AVD)”对话框的硬件部分中更改-->设备RAM大小。


    2

    我曾经遇到了同样的问题,但在出现这个问题之前,它要求我捕获一个视频源。我禁用了相机支持,然后就能使用1024MB的RAM了。我使用的是Windows 64位系统,Xoom(Android 3.0)。希望这对有同样问题的人有所帮助。


    1
    我也遇到了“无法分配内存:8”错误。我的电脑是W7-64位,有8GB的内存。后来我发现以管理员身份运行AVD后,这个错误就消失了,模拟器也能够正常启动。

    1

    我从 AVD 的启动选项更改了我的显示器 DPI 设置,并将其与我的显示器的原始和当前设置同步,这对我很有效。


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