2011-08-25 38 views
43

Ở nhiều nơi trên web, bạn sẽ thấy:giới hạn bộ nhớ trong Node.js (và chrome V8)

Giới hạn bộ nhớ trên quy trình nút là gì?

và câu trả lời:

Hiện nay, bởi v8 mặc định có một giới hạn bộ nhớ của 512MB trên các hệ thống 32-bit, và 1gb trên hệ thống 64-bit. Giới hạn có thể được tăng lên bằng cách đặt --max-old-space-size thành tối đa ~ 1gb (32-bit) và ~ 1.7gb (64-bit), nhưng bạn nên chia quá trình đơn thành nhiều công nhân nếu bạn đang đạt đến giới hạn bộ nhớ.

ai đó có thể xác nhận đây là trường hợp như node.js dường như cập nhật thường xuyên ??? * Và quan trọng hơn, nó sẽ là trường hợp trong tương lai gần? *

Tôi muốn viết mã javascript mà có thể phải đối phó với 4gb của các đối tượng javascript (và tốc độ có thể không phải là một vấn đề)

Nếu tôi không thể làm điều đó trong nút, tôi sẽ kết thúc làm trong java (trên một máy 64bit) nhưng tôi không muốn ...

+5

Điều gì trên thế giới có thể chiếm 4GB trong các đối tượng JS? –

+23

@ dominic-barnes: Hình ảnh. Phim. Heck, có vấn đề gì không? Một cái gì đó sẽ, một ngày nào đó. Ví dụ, một MMORPG. Tôi đồng ý rằng những hạn chế là tàn bạo, và nó là một sai lầm lập trình nghiêm trọng để sử dụng ints 32-bit để giải quyết trong bản thảo gốc của v8. –

+0

Nếu bạn muốn có 4gb dữ liệu, bạn không thể làm điều đó làm đối tượng JS. Có lẽ liên kết này có thể giúp đỡ? https://developer.mozilla.org/en/javascript_typed_arrays – goatslacker

Trả lời

1

Trông giống như một sự thật. Khi tôi đã cố gắng phân bổ chuỗi 50 Mb trong bộ đệm var buf = new Buffer(50*1024*1024); Tôi gặp lỗi nghiêm trọng FATAL ERROR: CALL_AND_RETRY_2 Allocation failed - process out of memory. Tôi đã cố định một cái gì đó khoảng 457 Mb của việc sử dụng bộ nhớ nodejs trong màn hình quá trình.

16

Đây là mối lo ngại lớn đối với một số người sử dụng Node.js và có tin vui. Giới hạn bộ nhớ mới cho V8 hiện chưa được biết (chưa được kiểm tra) cho 64bit và được nâng lên tới 32 bit cho phép trong môi trường 32 bit.

đọc thêm ở đây: http://code.google.com/p/v8/issues/detail?id=847

+2

Tôi vẫn còn (ngay cả với 64bit) cần phải xác định rằng tôi muốn nhiều bộ nhớ hơn với tùy chọn --max-old-space-size = 10000 (cho 10GB), nếu không tôi sẽ bị lỗi FATAL: CALL_AND_RETRY_2 Phân bổ không thành công - quá trình hết bộ nhớ "ở mức sử dụng bộ nhớ ~ 1.7 GB trong trình quản lý tác vụ trên Windows. –

+1

Tôi đang sử dụng 8gb + dễ dàng trong v7.8.0 - chỉ muốn máy của tôi có nhiều RAM – JoeRocc

5

Tôi đang chạy một proc tại trên Ubuntu Linux mà có một rò rỉ bộ nhớ nhất định và nút 0.6.0 đang đẩy 8gb. Hãy nghĩ rằng nó được xử lý :).

-5

nút - cờ-tuổi-không gian-size = chrome

+4

Đây không phải là câu trả lời. –

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