2012-06-30 35 views
11

Theo dõi chủ đề này trên:bao nhiêu bộ nhớ không nút phân bổ cho các giá trị null trong mảng

Lots of null values in an array mean any harm?

Tôi đã làm điều này với Node.js:

arr=[] 
arr[1000]=1 
arr[1000000000]=2 
arr.sort() 

Và tôi đã

FATAL ERROR: JS Allocation failed - process out of memory 

Vì vậy, để lại cho tôi với câu hỏi (Tôi không thể tìm thấy nó trên Yahoogle) bao nhiêu mem ory thực sự được cấp phát cho một mục nhập rỗng trong một mảng trong nút. Tôi không có kế hoạch sử dụng 1000000000 mục, thậm chí không đóng, nhưng có lẽ nó vẫn không có giá trị phân bổ bộ nhớ ...

Ai biết làm thế nào tôi có thể kiểm tra?

+0

Chương trình của bạn hoạt động tốt cho tôi trong Nút 0.6.2. – Pointy

+1

Theo ý kiến ​​của tôi, điều này không phụ thuộc vào node.js, nhưng chỉ trên thực thi công cụ JavaScript chạy JavaScript như câu hỏi mà bạn tham chiếu. – HeatfanJohn

+0

Liệu nó có bị lỗi trên 'arr.sort()'? – Eric

Trả lời

1

Vì vậy, tóm lại, node.js không cấp phát bộ nhớ cho các giá trị không xác định trong một mảng. Tai nạn tôi gặp phải phải là một trục trặc vì không ai khác có thể tái sản xuất và cài đặt phiên bản node.js mới nhất cũng loại bỏ vấn đề cho tôi.

-3

CHỈNH SỬA: Xin lỗi vì không chính xác, Có thể không áp dụng được cho JAVA ..
Vẫn có thể hữu ích cho người cần nó trong ứng dụng khác.

một loạt các tài liệu tham khảo được phân bổ x

do đó phân bổ arr [100000] sẽ phân bổ 100 kb x 4b ~ = 0.5Mb (xấp xỉ)

và YES, chắc chắn, nếu bạn không phải là gonna sử dụng tất cả các mảng,
bạn nên xem xét một HashMap mà là một cơ sở hạ tầng chỉ cho rằng ..
HashMap là tốt nhất trong việc có một khoảng tìm kiếm lớn với số lượng tương đối nhỏ của các mặt hàng.

Dù bằng cách nào, có các giải pháp để phân bổ một mảng nhỏ và mở rộng khi cần, nếu cần.

+2

Không, JavaScript không giống như các ngôn ngữ khác. Mảng không được preallocated. Về cơ bản, chúng là * bản đồ băm. – Pointy

+0

Tôi nghĩ về Hashes, nhưng tôi vẫn sử dụng số nguyên làm khóa và tôi cần có khả năng sắp xếp chúng theo khóa (hoặc ít nhất là giữ nguyên thứ tự của chúng) và lặp lại chúng theo tuần tự. Điều đó nghe giống như một công việc cho mảng chứ không phải là Hashes, phải không? – EasierSaidThanDone

+0

@EasierSaidThanDone bạn đang sử dụng phiên bản Node nào? Mã đó wworks tốt cho tôi (0.6.12) – Pointy

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