Không thể phân bổ bộ nhớ: 8


369

Từ hôm nay, khi tôi cố chạy một ứng dụng trong NetBeans trên nền tảng Android, nó cho tôi thấy rằng:

Không thể phân bổ bộ nhớ: 8

Ứng dụng này đã yêu cầu Runtime chấm dứt nó theo một cách khác thường. Vui lòng liên hệ với nhóm hỗ trợ của ứng dụng để biết thêm thông tin.

và Trình giả lập không muốn bắt đầu.

Đây là lần đầu tiên khi tôi nhìn thấy nó và google không có thông tin gì về điều này, tôi đã thử ngay cả với 2 phiên bản NetBeans 6.9.1 và 7.0.1, vẫn cùng một lỗi.


3
Chỉ tò mò tại sao bạn lại sử dụng NetBeans vs Eclipse. Tôi sử dụng NetBeans cho những thứ khác (cụ thể là php), nhưng tôi thấy việc sử dụng nhật thực cho công cụ Android dễ dàng hơn. Theo bạn thì lợi ích của nhật thực là gì?
SBerg413

3
Tôi chưa bao giờ sử dụng Eclipse trước đây, nhưng tôi không biết tại sao, tôi ghét nó, lý do, nó thậm chí còn phức tạp trong GUI so với NetBeans, nhưng hiện tại tôi đang tải xuống nó, để thử, nếu vấn đề biến mất, tôi sẽ làm Android thứ chỉ có trong đó.
Denees

47
Wow, bình luận đó là một cuộc thảm sát dấu phẩy. Dù sao, hãy đảm bảo AVD của bạn đang sử dụng một lượng RAM thích hợp (nghĩa là đủ để chạy nhưng không nhiều hơn máy tính của bạn có thể xử lý). Điều này được đặt khi bạn tạo thiết bị ảo.
Glendon Trullinger

2
Chỉ để tham khảo, tôi có Core i7 với 16gb ram, ram tối đa trên AVD của tôi và tất cả đều bị lag một cách đáng tiếc: /
Jack

1
Tôi có máy Windows 8 64 bit chạy trên bộ xử lý Intel core i7. Tôi đã phải thay đổi cài đặt ram cho AVD (Nexus 7) này xuống còn 512mb để nó chạy.
IgorGanapolsky

Câu trả lời:


373

Tôi đã hiểu rồi. Vấn đề là ở số lượng ram tôi đã chỉ định cho máy ảo và nó là 1024 MB, bây giờ tôi có 512MB và không sao, bây giờ tôi cần tìm cách cải thiện lượng ram này, 512 không quá nhiều, và Máy hơi lag một chút.


20
Tôi có cùng một vấn đề với điều này. Tôi có 8GB RAM trên máy, với 6GB miễn phí trong khi trình giả lập Android cho tôi biết rằng nó không thể phân bổ 1GB?
Strohotowski

5
Tôi có 8GB 8GB Ram, nhưng SDK nói với tôi rằng tôi không thể sử dụng nó nhiều hơn 512 :)
Denees

5
Thêm một sửa chữa để thêm. Đôi khi, đặt RAM thành các giá trị thấp hơn không hoạt động. Trong trường hợp đó, hãy thử khởi chạy trình giả lập từ dòng lệnh với thứ gì đó nhưemulator-x86 -avd <your_avd_name>
Mykhailo Gaidai

14
Chỉ cần có giải pháp: cần chỉ định mạnh mẽ độ phân giải AVD: 800 x 1280. Nó khởi động AVD của tôi như những gì tôi yêu cầu
Nirav Shah

4
Vấn đề xuất phát từ bất kỳ giao diện hiển thị nào có giá trị 1024 vào hw.ramSizetrong config.ini ( Device Ram Sizetrong danh sách Phần cứng của GUI). Đảm bảo chọn "giao diện" có giá trị thấp hơn hoặc sử dụng độ phân giải thủ công và xóa dòng này khỏi danh sách Phần cứng - bạn không thể xóa nó khi chọn giao diện.
RedGlyph

61

Đề cập đến Android: không thể phân bổ bộ nhớ và nhận xét đầu tiên theo câu trả lời được chấp nhận, việc thay đổi "1024" thành "1024MB" đã giúp tôi. Thảm hại, nhưng hoạt động.


29
'MB' không được trình giả lập nhận ra, buộc nó phải sử dụng giá trị 256 MB mặc định. Hãy lưu ý rằng số tiền bạn chỉ định không phải là số tiền bạn sẽ nhận được!
RedGlyph

1
Nhìn vào Ứng dụng, Runnning, liệt kê tổng dung lượng bộ nhớ vào khoảng 240 MB, do đó có vẻ như nó hoàn nguyên về 256 MB.
jishi

Cửa sổ Thêm Cấu hình Chạy trong tham số -memory 512 từ liên kết này đã sửa nó cho tôi
GatesReign

43

Trong trường hợp của tôi:

  • Sử dụng WXGA720 tích hợp để mô phỏng thiết bị 720p, luôn gặp lỗi này
  • Đặt thủ công độ phân giải AVD thành 720 x 1280, hoạt động với tôi

hy vọng nó sẽ giúp ~


Tương tự ở đây, Mặc định cho 7 "WXGA800 không thành công và thiết lập 800 x 1280 hoạt động.
xandy

30

Thay vào đó, hoạt động với 512 Mb. Không có phương pháp nào ở trên làm việc cho tôi.


Lỗi "Không thể phân bổ bộ nhớ: 8" đã biến mất sau khi giảm kích thước RAM từ 1024 xuống 768 Mib.
curd0

nhiều người trong số họ đang nói điều tương tự để sửa kích thước 512 MB. Nhưng nó hoàn toàn không hoạt động
Steve

30

Tất cả mọi thứ khác bạn đọc ở đây và ở nơi khác là phỏng đoán thuần túy. Cách chắc chắn duy nhất để khắc phục vấn đề này là bỏ phiếu cho báo cáo lỗi này .

Vấn đề không liên quan đến độ phân giải giả lập hoặc OpenGL, cũng như bộ nhớ máy tính của bạn có bao nhiêu bộ nhớ. Tôi đã có bộ nhớ 24GB trong máy tính và hầu hết thời gian tôi chạy đều hw.ramSize=1024gặp lỗi 8. Lần khác, nó hoạt động tốt mà không có bất kỳ thay đổi cấu hình nào. Tôi hy vọng bạn bắt được rằng: Tôi hoàn toàn không thay đổi cấu hình trình giả lập và đôi khi nó chạy và đôi khi nó bị lỗi.

Có khả năng cao nó có liên quan đến sự phân mảnh bộ nhớ. Tôi khuyên bạn nên giảm giá trị hw.ramSizenhư một cách giải quyết tạm thời.


2
Với tất cả sự tôn trọng, câu trả lời của bạn là phỏng đoán thuần túy là tốt; Đối với tôi, tôi không gặp vấn đề gì khi chạy bất kỳ thiết bị mô phỏng nào có RAM ảo được thiết lập cao tới 2048 (tôi không thử cao hơn nữa). Tuy nhiên, các thiết bị đó sẽ chỉ chạy khi tôi truy cập vào máy của mình thông qua Remote Desktop . Vì vậy, đối với tôi, đó chắc chắn là vấn đề đồ họa chứ không phải vấn đề phân mảnh bộ nhớ. Tôi có thể chứng minh điều này một cách đáng tin cậy bằng cách chuyển phiên qua lại giữa địa phương và từ xa. Cùng một phiên, cùng một trình quản lý AVD, không có thẻ NVIDIA khủng và trình điều khiển hợp pháp của họ trong một kịch bản. (Nhưng đó là một lời ca ngợi cho một chủ đề khác).
s.co.tt

Nếu đó là "phân mảnh RAM", có lẽ chúng ta có thể kiểm tra rằng bằng cách sử dụng một trong những chương trình "chống phân mảnh RAM" ngớ ngẩn đó, phải không?
Người dùng

17

Có vẻ như có hàng ngàn bản sửa lỗi khác nhau cho việc này ... không có cách khắc phục nào ở trên cho tôi, nhưng cách hiệu quả là khởi chạy AVD từ trình giả lập dòng lệnh-arm.exe @ AVD-NAME

Bằng cách nào đó, nếu được khởi chạy chỉ với trình giả lập, tôi sẽ nhận được thông báo lỗi tương tự như khi cố gắng khởi chạy qua Eclipse.


Bạn có thể có cùng một vấn đề như tôi. Các tập tin DLL được tải khi bạn khởi động trình giả lập từ một nơi chứ không phải nếu bạn bắt đầu từ một nơi khác.
mjaggard

14

Tôi nhận ra giải pháp cho vấn đề này bắt nguồn từ việc cấp phát bộ nhớ Eclipse khi bạn chạy ứng dụng ở chế độ bình thường. Tôi vừa kiểm tra hộp "Chạy với tư cách quản trị viên" trong các thuộc tính lối tắt cho Eclipse và bây giờ nó cho phép tôi phân bổ thêm bộ nhớ cho AVD.

Mong rằng sẽ giúp.


13

Tôi đã khắc phục vấn đề này bằng cách thay đổi kích thước màn hình thiết bị.

Tôi đã thấy rằng nếu bạn chỉ định ram 1024 mb thì bạn phải chỉ định kích thước màn hình thiết bị chỉ ở mức hdpi và nếu đó là ram 512 mb thì nó phải là mdpi hoặc các loại khác.

Vì vậy, chúng ta có thể nói rõ ràng rằng kích thước ram nên được chỉ định theo kích thước màn hình. Nếu bạn chỉ định kích thước 1024 ram trong khi vẫn giữ kích thước màn hình thiết bị ở mức mdpi thì sẽ xảy ra lỗi được đề cập ở trên, tức là "Không thể phân bổ bộ nhớ: 8 Ứng dụng này đã yêu cầu Runtime chấm dứt theo cách bất thường.

Vui lòng liên hệ với nhóm hỗ trợ của ứng dụng để biết thêm thông tin. "

hoặc là

thực hiện các tùy chọn của bạn trong trình quản lý AVD như sau:

[2013-01-11 14:44:01 - Trình quản lý SDK] hw.sensors.orientation = yes

[2013-01-11 14:44:01 - Trình quản lý SDK] hw.camera.front = none

[2013-01-11 14:44:01 - Trình quản lý SDK] hw.gps = có

[2013-01-11 14:44:01 - Trình quản lý SDK] skin.dynamic = không

[2013-01-11 14:44:01 - Trình quản lý SDK] hw.keyboard = không

[2013-01-11 14:44:01 - Trình quản lý SDK] vm.heapSize = 32

[2013-01-11 14:44:01 - Trình quản lý SDK] hw.ramSize = 343


Điều này đã hoạt động: [2015-07-23 12:54:59 - Trình quản lý SDK] đĩa.dataPartition.size = 500M [2015-07-23 12:54:59 - Trình quản lý SDK] hw.gpu.enatted = yes [2015- 07-23 12:54:59 - Trình quản lý SDK] hw.audioInput = yes [2015-07-23 12:54:59 - Trình quản lý SDK] hw.sensors.orientation = yes [2015-07-23 12:54:59 - Trình quản lý SDK] hw.camera.front = none [2015-07-23 12:54:59 - Trình quản lý SDK] hw.gps = yes [2015-07-23 12:54:59 - Trình quản lý SDK] skin.dynamic = không [2015-07-23 12:54:59 - Trình quản lý SDK] hw.keyboard = yes [2015-07-23 12:54:59 - Trình quản lý SDK] vm.heapSize = 32 [2015-07-23 12:54 : 59 - Trình quản lý SDK] hw.ramSize = 512
user914425

6

Tôi đã xem qua tất cả các giải pháp khác được đề cập trong chủ đề này và không tìm thấy bất cứ điều gì đang hoạt động nên tôi đã lảng tránh một chút. Phiên bản Google của API đã thất bại đối với tôi vì một số lý do. Tôi đã thay đổi nó trở lại vanilla và không gặp sự cố nữa.

Tôi phải có một số vấn đề khác nhưng có lẽ điều này sẽ giúp ai đó ...


Lạ Tôi đã được đặt thành phiên bản vanilla, nhưng chuyển đổi nó sang Google API đã giải quyết nó. +1 cho dù sao ý tưởng!
Paul

6

Có một cái nhìn vào vấn đề chính thức 33930 . Có ý kiến ​​cho rằng, nó có thể phải làm với việc khởi động OpenGL trong quá trình khởi động trình giả lập. Những người khác viết nó chỉ gặp sự cố khi họ sử dụng WXGA800-skin và đề nghị tự đặt độ phân giải thành 800x1280.

Hơn nữa, có các tệp ZIP được cung cấp để hạ cấp thủ công SDK Android của bạn xuống phiên bản 19 và plattform-tools thành phiên bản 11. Điều này cũng có thể giúp khắc phục vấn đề theo thời gian.


Điều này có thể liên quan đến vấn đề của tôi. Các tập tin DLL được tải khi bạn khởi động trình giả lập từ một nơi chứ không phải nếu bạn bắt đầu từ một nơi khác.
mjaggard

Phải có nhiều hơn cho nó. Đầu tiên, đặt nó thành WXGA800, sau đó thay đổi nó thành độ phân giải thủ công 1280x800 vẫn gặp sự cố AVD. Chỉ xóa các hw.ramSize=1024vấn đề (bạn không thể làm điều đó nếu WXGA được chọn, bạn cần sử dụng cài đặt độ phân giải thủ công).
RedGlyph

5

Tôi có 16 GB và một lõi tứ 3,4 Ghz trong máy của mình. Máy ảo sẽ không cho phép tôi chạy ở 1024. Tôi đã tăng nó lên tới 878 MB vì ​​nó thất bại ở 880 với cùng một thông điệp. Đây có vẻ là ram nhiều nhất tôi có thể phân bổ cho trình giả lập. Nó vẫn chậm nhưng tôi cho rằng nó tốt hơn 512MB.


5

Tôi thay đổi cài đặt DPI màn hình của mình từ các tùy chọn khởi chạy của AVD và đồng bộ hóa nó với cài đặt gốc và hiện tại của màn hình, và nó đã hoạt động.


4

Tôi đã giải quyết bằng cách đặt kích thước lưu trữ gấp 2 lần kích thước RAM và bằng cách đặt kích thước lưu trữ SD giống với kích thước RAM.


3

Tôi có cùng một vấn đề nhưng trước khi tôi gặp vấn đề, nó đã yêu cầu tôi ghi lại một nguồn video.

Tôi đã tắt hỗ trợ máy ảnh và tôi đã có thể sử dụng 1024MB of RAM.

Sử dụng Windows 64bit, Xoom (Android 3.0).


3

Trong trường hợp của tôi, độ phân giải màn hình changin từ WVGA720 đến WSVGA hoạt động với tôi.


3

Vấn đề là ở sự phân mảnh bộ nhớ. Hệ điều hành phải phân bổ tất cả ram bạn đã chỉ định cho vm (giả sử 1Gb) dưới dạng một khối liên tục. Đôi khi không có khối như vậy. Để sửa lỗi, hãy đóng các chương trình đang chạy, sau đó chạy avd và khởi động máy ảo của bạn.


2

Những gì làm việc cho tôi trên Windows là:

1) Đóng Eclipse 2) Chạy Avd UI 3) Đóng tất cả các quy trình đang chạy, đặc biệt là các quy trình nặng về bộ nhớ, như Chrome, explorer.exe, v.v. 4) Khởi động trình giả lập 5) Giành chiến thắng


2

Hãy chắc chắn rằng IntelHAXM được cài đặt đúng. Tải xuống và "cài đặt" nó không đủ thông qua Trình quản lý SDK. Bạn cần cài đặt thủ công từ:

android-sdk\extras\intel\Hardware_Accelerated_Execution_Manager

Ngoài ra, hãy chắc chắn rằng Công nghệ ảo Intel được bật trong BIOS của bạn.

Làm theo hướng dẫn trên developer.android.com hoặc hướng dẫn cài đặt của Intel .


2

Bạn chỉ cần chỉnh sửa ram thiết bị ảo của mình, làm cho nó thấp hơn! Hãy thử 20 MB, và nó sẽ hoạt động!


1

Tôi nhận thấy nó có liên quan đến chỉ một avd tất cả những cái còn lại tôi đã làm việc tốt. Tôi đã xóa nó và tạo một cái mới và bây giờ nó hoạt động.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.