Tôi có các liên kết tải các trang vào iframe. Tôi đã theo dõi sự tích tụ dữ liệu trong bộ nhớ bằng cách sử dụng bộ nhớ hồ sơ bộ nhớ của Google Chrome và tôi nhận thấy một số rò rỉ trong bộ nhớ.Iframe và quản lý bộ nhớ trong Javascript
Tôi đã tải trang và chụp ảnh chụp nhanh đầu tiên được thêm tối đa 2.69 MB
. Tôi đã nhấp vào liên kết mở một trang vào iframe và lấy một ảnh chụp khác cho tôi tổng số 14.58 MB
. Tôi đã gỡ bỏ các iframe sử dụng đoạn mã jquery sau:
$('#myframe').unbind();
$('#myframe').remove();
/*
* By the way, I also tried $('#myframe > *') as a selector.
* It still didn't work. Even if it would, it doesn't look like a viable solution to me.
* It looks too resource intensive.
*
* I forgot to mention that I am not using Ajax to load my pages
*/
tôi lấy ảnh chụp khác và có 5.28 MB
mà chỉ ra một sự sai lệch của 2.59 MB
từ giá trị ban đầu, mà theo hiểu biết của tôi chỉ ra leackage nhớ.
Bây giờ, câu hỏi của tôi là: Nếu tôi xóa khung nội tuyến (bao gồm tài liệu được tải trong đó) thì trình thu thập rác có cần phải xóa tất cả các đối tượng trong tài liệu đó khỏi bộ nhớ không? Hoặc tôi sẽ phải làm điều này bằng tay?
Tôi nghĩ rằng nếu tôi tải tài liệu vào khung nội tuyến, kích thước của nó sẽ không ảnh hưởng đến việc sử dụng bộ nhớ trên trang gốc. Tôi mặc dù nó sẽ được coi là một cửa sổ riêng biệt, nhưng rõ ràng đó không phải là một giả định được thông báo đầy đủ về phía tôi.
Bất kỳ đề xuất nào về cách giải quyết vấn đề này?
Cảm ơn bạn.
Chủ đề này có vẻ là điểm nhập tốt cho vấn đề này: http://stackoverflow.com/questions/3785258/how-to -remove-dom-elements-không-bộ nhớ-rò rỉ. – bperson
Điều gì sẽ xảy ra với bộ nhớ sau khi cửa sổ chính được tải xuống? –
Cảm ơn. Nếu tôi làm mới cửa sổ chính, bộ nhớ sẽ quay lại '2.69 MB' – Sthe