2015-05-29 24 views
23

Tôi đang sử dụng nút v0.12.4. Khi tôi chạy đoạn mã sau với node --max-old-space-size=8192 test.js nó mang lại cho tôi những lỗi FATAL ERROR: invalid array length Allocation failed - process out of memory- chiều dài mảng không hợp lệ

var a = new Array(200000000); 
console.log(a.length); 

Tuy nhiên nếu tôi thay đổi kích thước để 300.000.000 tôi không nhận được bất kỳ lỗi. Những gì đang xảy ra ở đây? Có một số đối số dòng lệnh ngoài số --max-old-space-size Tôi cần thay đổi không?

+0

Dự đoán đầu tiên của tôi là kích thước đầu tiên hơi nhỏ hơn số nguyên 32 bit lớn nhất và thứ hai hơi lớn hơn, nhưng có quá 0 số không cho vấn đề đó. – Pointy

+0

Thật thú vị, tôi thực sự không thể tái tạo điều này trong v0.10. v0.11 segfaults. – fny

+1

Có lẽ có liên quan: [Giới hạn bộ nhớ đống Node.js cho một đối tượng duy nhất] (http://stackoverflow.com/questions/25231808/node-js-heap-memory-limit-for-single-object) – jfriend00

Trả lời

6

kích thước heap V8 được giới hạn trong 1 GB cho 64 bit và 512 cho máy 32-bit, nhưng đối tượng đệm tồn tại chủ yếu bên ngoài đống. bạn có thể mở rộng bộ nhớ sử dụng lên đến 1,7 GB trong 64-bit và ~ 1 GB trong máy 32 bit. Bạn có thể thử điều này.

--max-old-space-size=3000 --trace-gc-verbose 

bạn có thể in dấu vết để biết về việc sử dụng bộ nhớ.

Các vấn đề liên quan