分配内存失败:8


369

从今天开始,当我尝试在2.3.3 Android平台上的NetBeans中运行应用程序时,它向我显示:

分配内存失败:8

该应用程序已请求运行时以一种异常方式终止它。请与应用程序的支持团队联系以获取更多信息。

并且模拟器不想启动。

这是我第一次看到它,而google对此没有任何回答,我什至尝试使用2个版本的NetBeans 6.9.1和7.0.1,仍然存在相同的错误。


3
只是好奇为什么要使用NetBeans vs Eclipse。我将NetBeans用于其他用途(即php),但刚刚发现将eclipse用于android则更容易。您认为蚀食有什么好处?
SBerg413 2011年

3
我以前从未使用过Eclipse,但是我不知道为什么,我讨厌它,原因是它在GUI vs NetBeans中甚至变得很复杂,但是目前我正在下载它,尝试尝试一下,如果问题消失了,我将仅在其中包含Android内容。
2011年

47
哇,那句话是逗号屠杀。无论如何,请确保您的AVD使用了适当数量的RAM(即足以运行,但不超过计算机可以处理的数量)。在创建虚拟设备时设置。
Glendon Trullinger

2
仅供参考,我有一个配备16gb ram的Core i7,在我的AVD上最大化了ram,不幸的是它们都很滞后:/
Jack Jack

1
我有一台在Intel Core i7处理器上运行的Windows 8 64位计算机。我必须将此AVD(Nexus 7)的RAM设置更改为512mb,才能运行。
IgorGanapolsky

Answers:


373

我想到了。问题出在我为虚拟机指定的ram数量上,它是1024MB,现在我有512MB,还可以,现在我需要找到如何提高此ram数量的方法,512不是那么多,并且机器有点落后。


20
我对此也有同样的问题。我的机器上有8GB的RAM,有6GB的空闲空间,而Android模拟器告诉我它不能分配1GB?
Strozykowski

5
我也有8GB的Ram,但是SDK告诉我,我不能使用超过512 :)
Denees

5
要添加的另一修复程序。有时,将RAM设置为较低的值不起作用。在这种情况下,请尝试emulator-x86 -avd <your_avd_name>
从命令行

14
刚找到解决方案:需要强制指定AVD分辨率:800 x1280。它会按我的要求启动我的AVD
Nirav Shah 2012年

4
问题来自任何hw.ramSize在config.ini中(Device Ram SizeGUI的硬件列表中)将值添加为1024的显示皮肤。确保选择一个值较小的“皮肤”,或者使用手动分辨率并从“硬件”列表中删除此行-选择皮肤后就不能删除它。
RedGlyph 2012年

61

指的是Android:无法分配内存,并且无法在接受的答案下给出第一条评论,将“ 1024”更改为“ 1024MB”对我有帮助。可悲,但有效。


29
模拟器无法识别“ MB”,从而迫使其使用默认的256 MB值。请注意,您指定的金额不是您所能获得的!
RedGlyph 2012年

1
在“应用程序”下,Runnning列出的内存总量约为240MB,因此似乎恢复为256 MB。
jishi 2012年

添加在运行配置窗口中的参数-Memory 512从这个链接固定对我来说
GatesReign

43

就我而言:

  • 使用内置的WXGA720模拟720p设备,总是会收到此错误
  • 手动将AVD分辨率设置为720 x 1280,对我有用

希望对你有帮助〜


此处类似,默认设置为7“ WXGA800失败,并且设置为800
x1280。– xandy

30

而是使用512 Mb。以上方法都不适合我。


将RAM大小从1024减小到768 Mib后,“分配内存失败:8”错误消失了。
curd0

他们中的许多人都在说相同的事情来修复512 MB的大小。但这根本没有用
Steve

30

您在此处和其他地方阅读的所有其他文章都是纯推测。解决此问题的唯一方法是对该错误报告进行投票。

问题与模拟器分辨率或OpenGL没有关系,也与计算机有多少内存无关。我的计算机上有24GB的内存,大多数情况下我运行时都hw.ramSize=1024遇到错误8。其他时候,它在没有任何配置更改的情况下也可以正常工作。我希望您能明白这一点:我根本没有更改模拟器的配置,但是有时它会运行,有时会失败。

它很有可能与内存碎片有关。我建议减少hw.ramSize作为临时解决方法的价值。


2
从各方面来看,您的答案也仅仅是纯粹的推测。对我来说,运行虚拟RAM设置为2048的任何仿真设备都没有问题(我没有尝试更高的尝试)。但是,只有当我通过远程桌面访问计算机时,这些设备才能运行。因此,对我而言,这当然是图形问题,而不是内存碎片问题。我可以通过在本地和远程之间来回切换会话来可靠地证明这一点。在一种情况下,同一会话,同一AVD管理器实例,只有糟糕的NVIDIA卡及其令人讨厌的驱动程序。(但这是另一个线程的烦恼)。
s.co.tt

如果是“ RAM碎片”,我们可能可以使用那些无聊的“ RAM碎片整理”程序之一进行测试,对吗?
用户

17

似乎有1000种不同的修复程序...以上对我来说都没有用,但是有效的方法是从命令行emulator-arm.exe @ AVD-NAME启动AVD

以某种方式,如果仅使用emulator.exe启动,与尝试通过Eclipse启动时,我将得到相同的错误消息。


你可能和我有同样的问题。当您从一个位置启动仿真器时,而不是从另一位置启动仿真器时,将加载DLL文件。
mjaggard 2012年

14

我意识到,以正常模式运行应用程序时,此问题的解决方案来自Eclipse内存分配。我刚刚选中了Eclipse快捷方式属性下的“以管理员身份运行”框,现在它允许我为AVD分配更多的内存。

希望能有所帮助。


13

我已经通过更改设备屏幕尺寸解决了这个问题。

我发现,如果您指定1024 mb ram,则必须仅以hdpi指定设备屏幕大小,如果为512 mb ram,则应为mdpi或其他。

因此,我们可以清楚地说,应根据屏幕尺寸指定压头尺寸。如果在将设备屏幕大小保持为mdpi的同时指定1024 ram大小,则会导致上述错误,即“分配内存失败:8该应用程序已请求运行时以一种不寻常的方式终止它。

请与应用程序的支持团队联系以获取更多信息。”

要么

在AVD管理器中进行如下选择:

[2013-01-11 14:44:01-SDK Manager] hw.sensors.orientation = yes

[2013-01-11 14:44:01-SDK Manager] hw.camera.front = none

[2013-01-11 14:44:01-SDK Manager] hw.gps = yes

[2013-01-11 14:44:01-SDK Manager] skin.dynamic = no

[2013-01-11 14:44:01-SDK Manager] hw.keyboard = no

[2013-01-11 14:44:01-SDK Manager] vm.heapSize = 32

[2013-01-11 14:44:01-SDK Manager] hw.ramSize = 343


这起作用了:[2015-07-23 12:54:59-SDK Manager] disk.dataPartition.size = 500M [2015-07-23 12:54:59-SDK Manager] hw.gpu.enabled = yes [2015- 07-23 12:54:59-SDK Manager] hw.audioInput = yes [2015-07-23 12:54:59-SDK Manager] hw.sensors.orientation = yes [2015-07-23 12:54:59 -SDK Manager] hw.camera.front = none [2015-07-23 12:54:59-SDK Manager] hw.gps = yes [2015-07-23 12:54:59-SDK Manager] skin.dynamic =否[2015-07-23 12:54:59-SDK Manager] hw.keyboard = yes [2015-07-23 12:54:59-SDK Manager] vm.heapSize = 32 [2015-07-23 12:54 :59-SDK管理器] hw.ramSize = 512
user914425

6

我遍历了该线程中提到的所有其他解决方案,但没有找到任何有效的方法,因此我在周围吃了点饭。Google版本的API由于某种原因对我失败。我把它改成了香草,不再崩溃。

我还必须解决其他问题,但这也许会对某人有所帮助...


奇。我设置为原始版本,但将其切换到Google API可以解决该问题。还是为这个想法+1!
保罗

6

看看官方发行号33930。需要指出的是,它可能与模拟器启动期间OpenGL的启动有关。其他人则只在使用WXGA800皮肤时崩溃,并建议手动将分辨率设置为800x1280。

此外,还提供了ZIP文件,可将您的android SDK手动降级至版本19,将plattform-tools降级至版本11。这也可能有助于暂时解决此问题。


这可能与我的问题有关。当您从一个位置启动仿真器时,而不是从另一位置启动仿真器时,将加载DLL文件。
mjaggard 2012年

必须有更多的东西。首先将其设置为WXGA800,然后将其更改为1280x800的手动分辨率仍然会使AVD崩溃。仅删除即可hw.ramSize=1024解决问题(如果选择WXGA,则不能这样做,您需要使用手动分辨率设置)。
RedGlyph 2012年

5

我的机器中有16 GB和3.4 GHz的四核proc。虚拟机也不允许我在1024上运行它。我确实将其增加到878MB,因为它在880失败并显示相同的消息。这似乎是我可以分配给模拟器的最大内存。它仍然很慢,但我认为它要比512MB好。


5

我从AVD的启动选项更改了显示器的DPI设置,并将其与显示器的原始设置和当前设置同步,并且可以正常工作。



3

我遇到了同样的问题,但是在遇到问题之前,它要求我捕获视频源。

我禁用了摄像头支持并且可以使用1024MB of RAM

使用Windows 64bit, Xoom (Android 3.0)


3

就我而言,将屏幕分辨率从WVGA720更改为WSVGA对我来说很有效。


3

问题出在内存碎片。操作系统必须将您为vm指定的所有内存(例如1Gb)分配为一个连续的块。有时没有这样的障碍。要修复它,请关闭正在运行的程序,然后运行avd并启动您的虚拟机。


2

在Windows上对我有用的是:

1)关闭Eclipse 2)运行Avd UI 3)关闭所有正在运行的进程,尤其是那些内存很大的进程,例如Chrome,explorer.exe等4)启动模拟器5)Win


2

确保正确安装了IntelHAXM。仅通过SDK Manager下载并“安装”它是不够的。您需要从以下位置手动安装它:

android-sdk\extras\intel\Hardware_Accelerated_Execution_Manager

另外,请确保在您的BIOS中启用了英特尔虚拟技术。

请遵循developer.android.com上的指南或英特尔的安装说明


2

您只需要编辑虚拟设备的内存,使其降低!尝试20 MB,它将起作用!


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.