2014-11-06 15 views
9

Tôi đang bị rò rỉ bộ nhớ trong mã của mình. vì vậy tôi đã chụp ảnh bộ nhớ bằng cách sử dụng nodemodule heapdump. bằng cách sử dụng heapdump tôi đã cố định một cái gì đó sau đó tốt của nó. Nhưng tại sao kích thước bộ đệm chuỗi vẫn còn quá cao và tiếp tục tăng?kết xuất bộ nhớ heap node.js, tại sao bộ nhớ String quá cao?

Tôi có ảnh chụp màn hình kèm theo của bộ nhớ heapdump cho thành phần của tôi. kích thước tệp heapdump là 139MB vì ​​vậy tôi không thể đính kèm ở đây. tôi không biết những thông tin khác các bạn cần phải giúp đỡ về vấn đề này ...

String memory list

Overall memory list

+0

Tôi gặp sự cố tương tự chính xác này, bạn đã bao giờ giải quyết vấn đề chưa? – iksose

+0

Chưa hoàn toàn nhưng đến gần hơn. sẽ đăng một lần tôi có giải pháp hoàn chỉnh. – balaphp

+0

Những chuỗi trong ảnh chụp màn hình là các hàm bao gồm tất cả các tệp bạn 'require()'. Vì chúng là vô danh, mọi mô-đun bắt buộc đều có riêng của nó. Tôi tự hỏi, tuy nhiên, tại sao họ không được phát hành. Bạn đang sử dụng phiên bản Node.js nào? Bạn đang sử dụng JS gốc hoặc một số ngôn ngữ biên dịch-to-js (CoffeeScript, TypeScript, vv)? –

Trả lời

0

Module memwatch có thể giúp cung cấp một số cái nhìn sâu sắc hơn. Nó sẽ cho phép bạn để đăng ký vào leak sự kiện

memwatch.on('leak', function(info) { 
console.error('Memory leak detected: ', info); 
}); 

Có một chi của this tutorial mà làm một công việc tuyệt vời của việc giải thích làm thế nào để phát hiện các nguyên nhân rò rỉ bộ nhớ trong nút.

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