ไม่สามารถจัดสรรหน่วยความจำได้: 8


369

ตั้งแต่วันนี้เมื่อฉันพยายามเรียกใช้แอพใน NetBeans บนแพลตฟอร์ม Android 2.3.3 มันแสดงให้ฉันเห็นว่า:

ไม่สามารถจัดสรรหน่วยความจำได้: 8

แอปพลิเคชั่นนี้ร้องขอให้ Runtime ทำการยกเลิกในลักษณะที่ผิดปกติ โปรดติดต่อทีมสนับสนุนของแอปพลิเคชันสำหรับข้อมูลเพิ่มเติม

และตัวเลียนแบบไม่ต้องการเริ่มต้น

นี่เป็นครั้งแรกที่ฉันเห็นมันและ google ไม่มี asnwers สำหรับเรื่องนี้ฉันลองแม้จะมี NetBeans 6.9.1 และ 7.0.1 ถึง 2 เวอร์ชัน แต่ก็ยังมีข้อผิดพลาดเหมือนเดิม


3
แค่สงสัยว่าทำไมคุณถึงใช้ NetBeans กับ Eclipse ฉันใช้ NetBeans สำหรับสิ่งอื่น ๆ (เช่น php) แต่เพิ่งพบว่าใช้ eclipse สำหรับ Android ได้ง่ายขึ้น ในความเห็นของคุณมีประโยชน์อย่างไรกับ eclipse?
SBerg413

3
ฉันไม่เคยใช้ Eclipse มาก่อน แต่ไม่รู้ว่าทำไมฉันเกลียดมันเหตุผลมันซับซ้อนแม้ใน GUI กับ NetBeans แต่ตอนนี้ฉันกำลังดาวน์โหลดมันลองถ้าปัญหาหายไปฉันจะทำ Android มีเฉพาะในนั้น
Denees

47
ว้าวความคิดเห็นนั้นเป็นการสังหารหมู่ด้วยเครื่องหมายจุลภาค อย่างไรก็ตามตรวจสอบให้แน่ใจว่า AVD ของคุณใช้ RAM ในปริมาณที่เหมาะสม (เช่นเพียงพอที่จะทำงานได้ แต่ไม่เกินที่คอมพิวเตอร์ของคุณสามารถรองรับได้) ตั้งค่านี้เมื่อคุณสร้างอุปกรณ์เสมือน
Glendon Trullinger

2
เพียงเพื่อการอ้างอิงฉันมี Core i7 ที่มี ram 16gb, maxxed out ram ใน AVD ของฉันและพวกเขาก็น่าเสียดายที่: /
แจ็ค

1
ฉันมีเครื่อง Windows 8 64 บิตที่ทำงานบนโปรเซสเซอร์ Intel Core i7 ฉันต้องเปลี่ยนการตั้งค่า ram สำหรับ AVD (Nexus 7) นี้เป็น 512mb เพื่อให้สามารถใช้งานได้
IgorGanapolsky

คำตอบ:


373

ฉันคิดออก ปัญหาคือจำนวน ram ที่ฉันระบุสำหรับเครื่องเสมือนและเป็น 1024MB ตอนนี้ฉันมี 512MB และมันก็โอเคตอนนี้ฉันต้องค้นหาวิธีการปรับปรุง ram จำนวน 512 ไม่มากและ เครื่องค่อนข้างล้าหลังนิดหน่อย


20
ฉันมีปัญหาเดียวกันกับสิ่งนี้ ฉันมี RAM 8GB บนเครื่องของฉันโดยมี 6GB นั่งฟรีในขณะที่ตัวจำลอง Android บอกฉันว่ามันไม่สามารถจัดสรร 1GB ได้หรือไม่
Strozykowski

5
ฉันมีเช่นกัน 8GB ราม แต่ SDK บอกฉันว่าฉันไม่สามารถใช้มันมากขึ้นกว่า 512 :)
Denees

5
อีกหนึ่งการแก้ไขที่จะเพิ่ม บางครั้งการตั้งค่า RAM ให้ต่ำกว่าจะไม่ทำงาน ในกรณีนี้ลองเปิดตัวอีมูเลเตอร์จาก commandline ด้วยบางสิ่งบางอย่างemulator-x86 -avd <your_avd_name>
Mykhailo Gaidai

14
เพิ่งได้รับการแก้ปัญหา: ต้องระบุความละเอียด AVD อย่างแข็งขัน: 800 x 1280 มันเริ่มต้น AVD ของฉันตามที่ฉันต้องการ
Nirav Shah

4
ปัญหามาจากสกินของจอแสดงผลใด ๆ ที่เพิ่มค่า 1024 ไปยังhw.ramSizeใน config.ini ( Device Ram Sizeในรายการฮาร์ดแวร์ของ GUI) ตรวจสอบให้แน่ใจว่าได้เลือก "สกิน" ที่มีค่าต่ำกว่าหรือใช้ความละเอียดด้วยตนเองและเพื่อลบบรรทัดนี้ออกจากรายการฮาร์ดแวร์ - คุณไม่สามารถลบออกได้เมื่อเลือกสกิน
RedGlyph

61

การอ้างอิงถึงAndroid: ไม่สามารถจัดสรรหน่วยความจำและความคิดเห็นแรกภายใต้คำตอบที่ยอมรับได้การเปลี่ยน "1024" เป็น "1024MB" ช่วยฉันได้ น่าสงสาร แต่ใช้ได้


29
ตัวเลียนแบบไม่รู้จัก 'MB' บังคับให้ใช้ค่าเริ่มต้น 256 MB ระวังว่าจำนวนเงินที่คุณระบุไม่ใช่สิ่งที่คุณจะได้รับ!
RedGlyph

1
ค้นหาภายใต้แอพ Runnning แสดงรายการจำนวนหน่วยความจำรวมประมาณ 240MB ดังนั้นจึงดูเหมือนว่าจะเปลี่ยนเป็น 256 MB
jishi

เพิ่มในหน้าต่าง Run Configurations พารามิเตอร์ - หน่วยความจำ 512 จากลิงค์นี้แก้ไขให้ฉัน
GatesReign

43

ในกรณีของฉัน:

  • การใช้ WXGA720 ในตัวเพื่อจำลองอุปกรณ์ 720p จะได้รับข้อผิดพลาดนี้เสมอ
  • ตั้งค่าความละเอียด AVD ด้วยตนเองเป็น 720 x 1280 ใช้งานได้สำหรับฉัน

หวังว่ามันจะช่วย ~


คล้ายกันที่นี่ค่าเริ่มต้นสำหรับ 7 "WXGA800 ล้มเหลวและการตั้งค่า 800 x 1280 ใช้งานได้
xandy

30

ใช้งานได้กับ 512 Mb แทน วิธีการข้างต้นไม่เหมาะกับฉัน


ข้อผิดพลาด "ล้มเหลวในการจัดสรรหน่วยความจำ: 8" หายไปหลังจากลดขนาด RAM จาก 1024 เป็น 768 Mib
curd0

หลายคนบอกสิ่งเดียวกันเพื่อแก้ไขขนาด 512 MB แต่มันไม่ได้ผลเลย
Steve

30

ทุกสิ่งที่คุณอ่านที่นี่และที่อื่น ๆ เป็นการคาดเดาที่บริสุทธิ์วิธีแก้ไขปัญหานี้ได้อย่างเดียวคือโหวตให้กับรายงานข้อผิดพลาดนี้

ปัญหาไม่เกี่ยวข้องกับความละเอียดของอีมูเลเตอร์หรือ OpenGL และหน่วยความจำคอมพิวเตอร์ของคุณมีเท่าไหร่ ฉันมีหน่วยความจำ 24GB ในคอมพิวเตอร์ของฉันและส่วนใหญ่ที่ฉันทำงานด้วยhw.ramSize=1024ฉันได้รับข้อผิดพลาด 8 ครั้งอื่น ๆ ก็ใช้งานได้ดีโดยไม่มีการเปลี่ยนแปลงการกำหนดค่า ฉันหวังว่าคุณจะเข้าใจว่า: ฉันไม่ได้เปลี่ยนการกำหนดค่าตัวจำลองทั้งหมดและบางครั้งก็ทำงานและบางครั้งก็ล้มเหลว

มีความน่าจะเป็นสูงที่มีบางอย่างเกี่ยวข้องกับการแตกแฟรกเมนต์ ฉันขอแนะนำให้ลดค่าhw.ramSizeเป็นวิธีแก้ปัญหาชั่วคราว


2
ด้วยความเคารพทุกคำตอบของคุณคือการคาดเดาที่บริสุทธิ์เช่นกัน สำหรับฉันฉันไม่มีปัญหาในการใช้งานอุปกรณ์ที่จำลองใด ๆ ที่ตั้งค่า RAM เสมือนสูงถึง 2048 (ฉันไม่ได้ลองมากกว่านี้) อย่างไรก็ตามอุปกรณ์เหล่านั้นจะทำงานเมื่อฉันเข้าถึงเครื่องผ่านเดสก์ท็อประยะไกลเท่านั้น ดังนั้นสำหรับฉันมันเป็นปัญหากราฟิกอย่างแน่นอนและไม่ใช่ปัญหาการกระจายตัวของหน่วยความจำ ฉันสามารถพิสูจน์สิ่งนี้ได้อย่างน่าเชื่อถือโดยการกระโดดเซสชั่นของฉันไปมาระหว่างท้องถิ่นและระยะไกล เซสชันเดียวกันอินสแตนซ์เดียวกันของผู้จัดการ AVD ไม่มีการ์ด NVIDIA ที่น่ากลัวและไดรเวอร์ที่ยอดเยี่ยมในสถานการณ์เดียว (แต่นั่นเป็นการคุยโวสำหรับหัวข้ออื่น)
s.co.tt

หากเป็น "การกระจายตัวของ RAM" เราอาจทดสอบว่าใช้โปรแกรม "การจัดเรียงข้อมูล RAM" ที่ไม่มีสติใด ๆ ใช่ไหม?
ผู้ใช้

17

ดูเหมือนว่าจะมีการแก้ไขที่แตกต่างกันหลายพันสำหรับสิ่งนี้ ... ไม่มีการทำงานใด ๆ ข้างต้นสำหรับฉัน แต่สิ่งที่ได้ผลคือการเปิด AVD จากบรรทัดคำสั่ง emulator-arm.exe @ AVD-NAME

อย่างใดถ้าเปิดตัวด้วย emulator.exe เท่านั้นฉันจะได้รับข้อความแสดงข้อผิดพลาดเดียวกันกว่าเมื่อพยายามเปิดใช้งานผ่าน Eclipse


คุณอาจมีปัญหาเช่นเดียวกับฉัน ไฟล์ DLL จะถูกโหลดเมื่อคุณเริ่มโปรแกรมจำลองจากที่เดียวและไม่ใช่ถ้าคุณเริ่มจากที่อื่น
mjaggard

14

ฉันรู้วิธีแก้ปัญหานี้เกิดจากการจัดสรรหน่วยความจำ Eclipse เมื่อคุณเรียกใช้แอปพลิเคชันในโหมดปกติ ฉันเพิ่งทำเครื่องหมายที่ช่อง "เรียกใช้ในฐานะผู้ดูแลระบบ" ภายใต้คุณสมบัติทางลัดสำหรับ Eclipse และตอนนี้ฉันสามารถจัดสรรหน่วยความจำเพิ่มเติมสำหรับ AVD ได้แล้ว

หวังว่าจะช่วย


13

ฉันเอาชนะปัญหานี้ได้ด้วยการเปลี่ยนขนาดหน้าจอของอุปกรณ์

ฉันได้พบว่าถ้าคุณระบุ ram 1024 mb แล้วคุณต้องระบุขนาดหน้าจอของอุปกรณ์เป็น hdpi เท่านั้นและถ้าเป็น 512 mb ram มันควรจะเป็น mdpi หรืออื่น ๆ

ดังนั้นเราสามารถพูดได้อย่างชัดเจนว่าขนาด RAM ควรระบุตามขนาดหน้าจอ หากคุณระบุขนาด RAM 1024 ในขณะที่รักษาขนาดหน้าจอของอุปกรณ์เป็น mdpi จะทำให้เกิดข้อผิดพลาดดังกล่าวข้างต้นคือ "ล้มเหลวในการจัดสรรหน่วยความจำ: 8 แอปพลิเคชันนี้ได้ร้องขอให้ Runtime ยุติการทำงานในลักษณะผิดปกติ

โปรดติดต่อทีมสนับสนุนของแอปพลิเคชันสำหรับข้อมูลเพิ่มเติม "

หรือ

ทำตัวเลือกของคุณใน AVD manager ดังต่อไปนี้:

[2013-01-11 14:44:01 - ตัวจัดการ SDK] hw.sensors.orientation = ใช่

[2013-01-11 14:44:01 - ตัวจัดการ SDK] hw.camera.front = ไม่มี

[2013-01-11 14:44:01 - ตัวจัดการ SDK] hw.gps = ใช่

[2013-01-11 14:44:01 - ผู้จัดการ SDK] skin.dynamic = ไม่

[2013-01-11 14:44:01 - ตัวจัดการ SDK] hw.keyboard = ไม่

[2013-01-11 14:44:01 - ตัวจัดการ SDK] vm.heapSize = 32

[2013-01-11 14:44:01 - ตัวจัดการ SDK] hw.ramSize = 343


สิ่งนี้ทำงานได้: [2015-07-23 12:54:59 - ตัวจัดการ SDK] disk.dataPartition.size = 500M [2015-07-23 12:54:59 - ตัวจัดการ SDK] hw.gpu.enabled = ใช่ [2015- 07-23 12:54:59 - ตัวจัดการ SDK] hw.audioInput = ใช่ [2015-07-23 12:54:59 - ตัวจัดการ SDK] hw.sensors.orientation = ใช่ [2015-07-23 12:54:59 - ตัวจัดการ SDK] hw.camera.front = none [2015-07-23 12:54:59 - ตัวจัดการ SDK] hw.gps = ใช่ [2015-07-23 12:54:59 - ตัวจัดการ SDK] skin.dynamic = ไม่ใช่ [2015-07-23 12:54:59 - ตัวจัดการ SDK] hw.keyboard = ใช่ [2015-07-23 12:54:59 - ตัวจัดการ SDK] vm.heapSize = 32 [2015-07-23 12:54 : 59 - ตัวจัดการ SDK] hw.ramSize = 512
user914425

6

ฉันได้อ่านวิธีแก้ปัญหาอื่น ๆ ทั้งหมดที่กล่าวถึงในหัวข้อนี้และไม่พบสิ่งใดที่ทำงานได้ดังนั้นฉันจึงคิดในใจเล็กน้อย API ของ Google เวอร์ชันล้มเหลวในตัวฉันด้วยเหตุผลบางอย่าง ฉันเปลี่ยนมันกลับเป็นวานิลลาและไม่มีปัญหาอีกแล้ว

ฉันต้องมีปัญหาอื่น แต่อาจจะช่วยให้ใครบางคน ...


แปลก ฉันถูกตั้งค่าเป็นรุ่นวานิลลา แต่เปลี่ยนเป็น Google API แก้ไขได้ +1 สำหรับแนวคิดต่อไป!
พอล

6

มีลักษณะที่อย่างเป็นทางการปัญหา 33930 มีการชี้ให้เห็นว่ามันอาจจะเกี่ยวข้องกับการเริ่มต้นของ OpenGL ในช่วงเริ่มต้นของการจำลอง คนอื่นเขียนว่ามันขัดข้องเฉพาะเมื่อใช้ WXGA800-skin และแนะนำให้ตั้งความละเอียดด้วยตนเองเป็น 800x1280

นอกจากนี้ยังมีไฟล์ ZIP ที่ให้ไว้เพื่อลดระดับ Android SDK ของคุณเป็นเวอร์ชัน 19 และเครื่องมือ plattform-tools ไปเป็นเวอร์ชั่น 11 ซึ่งอาจช่วยแก้ไขปัญหาชั่วคราวได้เช่นกัน


นี่อาจเกี่ยวข้องกับปัญหาของฉัน ไฟล์ DLL จะโหลดเมื่อคุณเริ่มโปรแกรมจำลองจากที่เดียวและไม่ใช่ถ้าคุณเริ่มจากที่อื่น
mjaggard

ต้องมีมากกว่านี้ ก่อนอื่นให้ตั้งค่าเป็น WXGA800 จากนั้นเปลี่ยนเป็นความละเอียดแบบแมนนวลที่ 1280x800 ยังคงเกิดปัญหา AVD การลบการhw.ramSize=1024แก้ปัญหาเท่านั้น (คุณไม่สามารถทำได้หากเลือก WXGA คุณต้องใช้การตั้งค่าความละเอียดด้วยตนเอง)
RedGlyph

5

ฉันมี 16 GB และ proc quad core 3.4 Ghz ในเครื่องของฉัน เครื่องเสมือนไม่ยอมให้ฉันรันที่ 1024 เช่นกัน ฉันชนมันได้มากถึง 878MB เพราะมันล้มเหลวที่ 880 ด้วยข้อความเดียวกัน นี่น่าจะเป็นแรมมากที่สุดที่ฉันสามารถจัดสรรให้กับอีมูเลเตอร์ได้ มันยังช้าอยู่ แต่ฉันคิดว่ามันดีกว่า 512MB


5

ฉันเปลี่ยนการตั้งค่า DPI ของจอภาพจากตัวเลือกการเปิดใช้งาน AVD และซิงโครไนซ์มันกับการตั้งค่าดั้งเดิมและปัจจุบันของจอภาพของฉันและทำงานได้


4

ฉันแก้ไขโดยใส่เป็นขนาดการจัดเก็บ 2 เท่าของขนาด RAM และโดยการใส่ขนาดการจัดเก็บ SD เหมือนกับขนาด RAM


3

ฉันมีปัญหาเดียวกัน แต่ก่อนที่ฉันจะพบปัญหาฉันขอให้จับแหล่งวิดีโอ

ฉันปิดใช้งานการสนับสนุนกล้องและฉันสามารถใช้งาน1024MB of RAMได้

การใช้ 64bit, Xoom (Android 3.0)Windows


3

ในกรณีของฉันความละเอียดหน้าจอเปลี่ยนจาก WVGA720 เป็น WSVGA นั้นใช้ได้สำหรับฉัน


3

ปัญหาอยู่ในการกระจายตัวของหน่วยความจำ ระบบปฏิบัติการต้องจัดสรร ram ทั้งหมดที่คุณระบุสำหรับ vm (พูด 1Gb) เป็นหนึ่งบล็อกต่อเนื่อง บางครั้งไม่มีบล็อกดังกล่าว หากต้องการแก้ไขให้ปิดโปรแกรมที่กำลังทำงานอยู่ให้เรียกใช้ avd ​​และเริ่มเครื่องเสมือนของคุณ


2

สิ่งที่ใช้ได้ผลสำหรับฉันบน Windows คือ:

1) การปิด Eclipse 2) การเรียกใช้ Avd UI 3) การปิดกระบวนการทำงานทั้งหมดโดยเฉพาะอย่างยิ่งที่มีหน่วยความจำหนักเช่น Chrome, explorer.exe, ฯลฯ 4) เริ่มโปรแกรมจำลอง 5) ชนะ


2

ตรวจสอบให้แน่ใจว่าติดตั้ง IntelHAXM อย่างถูกต้อง ไม่เพียงพอที่จะดาวน์โหลดและ "ติดตั้ง" ผ่านทาง SDK Manager คุณต้องติดตั้งด้วยตนเองจาก:

android-sdk\extras\intel\Hardware_Accelerated_Execution_Manager

ตรวจสอบให้แน่ใจด้วยว่าเปิดใช้งาน Intel Virtual Technology ใน BIOS ของคุณแล้ว

ทำตามคำแนะนำบนdeveloper.android.comหรืออินเทลคำแนะนำการติดตั้ง


2

คุณจะต้องแก้ไข ram ของอุปกรณ์เสมือนของคุณทำให้ต่ำลง! ลอง 20 MB แล้วมันจะใช้งานได้!


1

ฉันสังเกตเห็นว่ามันเกี่ยวข้องกับเพียงหนึ่ง avd ส่วนที่เหลือทั้งหมดที่ฉันได้ทำงานได้ดี ฉันลบมันแล้วสร้างใหม่และตอนนี้ก็ใช้งานได้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.