2015-07-03 11 views
6

Trong C, bạn yêu cầu và quản lý bộ nhớ một cách rõ ràng trên heap, do đó tương tác với heap được xác định rõ ràng/rõ ràng. Làm thế nào để bạn có lý do về điều này trong Node.js?Trong Node.js, khi nào dữ liệu được lưu trữ trên heap?

Sub-câu hỏi:

  • nơi/làm thế nào các chức năng lưu trữ?
  • có các đối tượng/nguyên thủy nào đó luôn được lưu trữ trên heap không? (ví dụ: bộ đệm)
  • dữ liệu có di chuyển từ ngăn xếp sang đống không? khi nào?

Tài liệu tham khảo về chủ đề này cũng sẽ được đánh giá cao, cảm ơn.

+0

Một câu trả lời cho điều này chắc chắn sẽ rất hữu ích trong việc định vị rò rỉ bộ nhớ có thể trong phát triển. Câu hỏi hay. –

Trả lời

0

Bạn không quan tâm đến ngăn xếp so với heap cũng như về giải phóng bộ nhớ. Nó xảy ra tự động vì Node.js cung cấp bộ thu gom rác chính xác. Một số dữ liệu được lưu trữ trong GC đống. Một số dữ liệu nằm trên ngăn xếp. Bạn thường không thể nói bởi vì nó phụ thuộc vào các tối ưu hóa được thực hiện bởi trình biên dịch JIT khi chạy. Công cụ lược tả có thể cung cấp thông tin chi tiết về ứng dụng cụ thể.

Đối với các nguồn lực khác so với bộ nhớ (file ví dụ và ổ cắm), sử dụng finally:

var file = open(…); 
try { 
    … 
} finally { 
    close(file); 
} 
+0

Tôi nghĩ những gì bạn muốn nói là "Bạn ** không nên ** quan tâm đến stack vs heap" ... rõ ràng là một số người quan tâm, nếu không thì đây sẽ không phải là một câu hỏi. –

+0

@rightfold Tôi quan tâm nhiều hơn đến việc khái niệm hóa thời gian chạy có thể thực hiện các quyết định này để hiểu/xác nhận nó trong quá trình phát triển. Rõ ràng bạn có thể coi nó như là một hộp đen, nhưng tôi nghĩ rằng một sự hiểu biết về điều này sẽ hữu ích cho hầu hết các nhà phát triển Node.js. –

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