Có một rò rỉ bộ nhớ nặng trong ứng dụng của tôi nhưng tôi không tìm ra nguyên nhân, và đây là nền.Chúng ta có cần hủy liên kết trình lắng nghe sự kiện trong các chỉ thị khi góc bắt đầu phá hủy không?
- Tôi đang sử dụng AngularJS + JQuery (plugin)
Nhiều người nghe đang bị ràng buộc như sau:
$ (element) .Trên ("KeyUp", function() {});
Vì vậy, câu hỏi là
Tôi có cần phải unbind những thính giả trong chỉ thị bằng cách làm theo?
scope.$on("$destroy", function() {
$(element).off();
});
BTW, làm thế nào để bạn thường tìm ra rò rỉ bộ nhớ trong ứng dụng web? Tôi sử dụng hồ sơ của chrome (xem tại đây Profiling memory performance) nhưng tôi không thể theo dõi các mã nơi rò rỉ bộ nhớ. Bạn có đề nghị nào không?
Cảm ơn rất nhiều!
Tôi không nghĩ rằng thats cần thiết trừ khi bạn đang ràng buộc tất cả các phạm vi đến $ rootScope. –
Bạn không cần phải loại bỏ chúng, chúng thường là rác thu thập được. Bạn có thể muốn loại bỏ người nghe của cửa sổ mặc dù, như di chuyển hoặc các sự kiện tin nhắn nếu trình xử lý tương tác với các phần tử của phạm vi. Xem http://stackoverflow.com/questions/12528049/if-a-dom-element-is-removed-are-its-listeners-also-removed-from-memory – Kapep