Android模拟器无法分配8MB内存

157

当我试图从Eclipse运行我的WXGA800模拟器时,会出现如下错误:

Failed to allocate memory: 8
This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.

我也查看了以下链接:

Failed to allocate memory: 8

Android:无法分配内存

我尝试了减小模拟器中的RAM大小,增加Java堆大小和RAM大小,但仍然遇到同样的错误。


尝试手动设置分辨率,而不是使用内置皮肤。 - SteveR
请在这里查看我的答案: https://dev59.com/0W025IYBdhLWcg3wf2KE#14420779 - Prymaldark
可能是分配内存失败:8的重复问题。 - Peter O.
很好。我之前用不太优美的措辞问了同样的问题,结果被人们踩了。希望这里有一个好的答案。我正在尝试模拟支持S-Pen的三星Galaxy手机,但它们都超出了模拟器的能力范围。 - Sinthia V
https://dev59.com/mWgt5IYBdhLWcg3w-ST1#11868277 - Frank Myat Thu
12个回答

410

更新:从Android SDK Manager版本21开始,解决方案是编辑C:\Users\<user>\.android\avd\<avd-profile-name>.avd\config.ini文件并更改值。

hw.ramSize=1024 

to

hw.ramSize=1024MB

Android 4.2 API 17

如果你不想让模拟器变得很慢,建议使用新的 API17 Intel x86映像文件(HAXMConfiguration)。


较早版本的 Android SDK Manager:

使用内置的 WXGA800皮肤也会出现类似的问题。解决方法是编辑虚拟设备设置为:

  • 目标选择4.0.3 API 15 / 4.1.0 API 16
  • SD卡大小300MiB
  • 分辨率手动设置为1280 x 800(不要使用内置的分辨率)
  • 设备内存大小为1024MB(后面添加 MB 字符串)
  • 抽象屏幕密度设置为160

这里是针对 4.1.0 API 16 的平板电脑配置:C:\Users\<user>\.android\avd\<avd-profile-name>.avd\config.ini

hw.lcd.density=160
sdcard.size=300M
skin.path=1280x800
skin.name=1280x800
hw.cpu.arch=arm
abi.type=armeabi-v7a
hw.cpu.model=cortex-a8
vm.heapSize=48
hw.ramSize=1024MB
image.sysdir.1=system-images\android-16\armeabi-v7a\

这个配置还显示软件键 安卓4.1模拟器截图 1280x800@160


2
+1 我采纳了这个建议,然后从命令行启动模拟器,以使其正常工作。希望Xavier能尽快解决这个不稳定性问题... - BrantApps
9
我通过将“内存选项:RAM”减小到512并将SD卡大小设置为300MiB来消除了错误。 - Someone Somewhere
3
说真的,这个 bug 真是太蠢了... / 打脸 至少现在我可以继续进行了!谢谢! - mrswadge
2
哇,这太糟糕了。官方的SDK和测试工具不能正确处理这个问题吗?你必须手动编辑.ini文件,而且这种情况已经持续了近一年?这太不可思议了。 - matt lohkamp
1
非常惊讶那个起作用了。我猜是因为我很惊讶这个漏洞存在了这么长时间而没有被修复。 - theblang
显示剩余7条评论

67

下面的解决方案对我有效。在以下配置文件中:

C:\Users\<user>\.android\avd\<avd-profile-name>.avd\config.ini

替换

hw.ramSize=1024

需要翻译的内容:

by

hw.ramSize=1024MB

1
不确定为什么,但这解决了问题。谢谢。 - schar
1
不错,这一定是个bug...我遵循了文件约定,只使用了一个M,也起作用了。 - HGPB
17
Google这么做有点可悲,他们不测试吗? - Cory Trese
+1 这对我很有效。也许是因为当我指定内存大小时选择了1 GB。 - Eng.Fouad
4
在另一个回答中,有人声称“MB”实际上并没有被识别,将内存从1024更改为1024MB实际上会将内存减少到默认的256MB,因此它开始工作。来源:https://dev59.com/v2w05IYBdhLWcg3weBru - Juha Palomäki
安装了Android Studio之后,似乎我遇到了所有可能的错误。感谢StackOverflow,这个问题得以解决。 - Adrian P.

9

在我的情况下,解决方案是不仅要更改 config.ini 文件,还要更改特定皮肤的 hardware.ini 文件,将 hw.ramSize=1024 更改为 hw.ramSize=1024MB

寻找 hardware.ini 文件的步骤如下:

  1. 打开 config.ini 文件并找到 skin.path
  2. 然后导航到安卓 SDK 的所在文件夹。
  3. 打开路径,如此: android-sdk\platforms\android-15\skins\WXGA720
  4. 在该文件夹内,您会找到 hardware.ini 文件。
  5. hw.ramSize=1024 更改为 hw.ramSize=1024MB

2
這對我來說有效。我不知道為什麼其他人不喜歡你的答案。謝謝! - Veaceslav Gaidarji

5

更新:从Android SDK Manager 21版本开始,解决方法是编辑C:\Users\.android\avd\.avd\config.ini并更改值

hw.ramSize=1024 为

hw.ramSize=1024MB

或者

hw.ramSize=512MB


3

如果您将AVD RAM设置为大于模拟器能够分配的连续内存单块的最大值,则会发生此错误。关闭任何占用大量内存的程序,启动模拟器并启动您需要的所有其他程序。在之前的回答中,我将其限制为具有IntelHAXM的x86映像,但实际上适用于所有类型的模拟器实例。


3
在AVD设置中: 将CPU/ABI选项更改为MIPS。 这对我起了作用。

1
我曾经遇到同样的问题,最终问题的原因是内存大小:显然1024(或任何大小)与1024MB不同。请确保您指定了正确的单位,那么它就能正常工作了。

1

修改config.ini文件中的ramSize对我没有起作用。

我在“编辑Android虚拟设备”窗口中将SD卡大小更改为1000 MiB……它起作用了!:)


你确定你的回答与问题有关吗?因为问题似乎与 RAM 有关,而更改 SD 卡大小不会改变 RAM。 - class stacker

0

前往编辑 Android 虚拟设备并将“内存选项”下的 1024 更改为 768。如果仍然无法正常工作,请继续降低内存。


0

在AVD设置中减小RAM大小对我很有效。AVD运行缓慢可能会占用大量RAM,因此将其保持在最小值是可行的。


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