[英]Javascript Memory Management Leaks
目前,我正在創建一個Web應用程序。 用戶應該能夠整天運行我的應用程序。 目前,我遇到了一些內存問題。 瀏覽器似乎崩潰的地方。 我正在使用的是這種結構:
function Module() {
var _me = this;
this.init = function(){
_me.setBindings(); // Using reference from Module instead of this
}
// All kind of functions
this.init();
}
我改成了this
。
因此,這是一個更復雜的情況(這實際上是我的代碼atm的一部分):
$.modules.dynamic_static_webpage.prototype.addRedirect = function (anum, aeditor) {
$.prompt(
$.utils.getTranslation("Redirect"),
$.utils.getTranslation("Geef de URL op waar naar toe geredirect moet worden"),
$.proxy(function (num, editor, input) {
this.clearRedirect(editor);
var val = input.val();
if (val.indexOf("www") == 0) {
val = "http://" + val;
}
// Timeout needed, because otherwise the clear is not finished
setTimeout($.proxy(function (n, e, v) {
$.HTMLTexteditorField.setIframeSelectionHTML.call(e, "{CMS-REDIRECT" + n + "_" + v + "}");
this.redirectShow(n, v);
}, this, num, editor, val), 200);
}, this, anum, aeditor)
);
};
現在,我添加了很多$.proxy
。 這似乎有點奇怪。
我有很多“在范圍內,范圍內使用變量”。 我將其重寫為上面的代碼。 我曾在類似的不同站點上瀏覽過,但無法弄清楚:
有人能解釋一下這是否是避免記憶泄漏的正確方法嗎? 還是有更好的解決方案?
您的代碼中沒有任何東西可以向我表明您將遇到內存泄漏問題。 然而,更令人擔憂的是,您正在使用的避免內存泄漏的代碼風格使很難判斷是否會出現內存問題。 您已經發布了幾十行代碼; 一個以這種樣式編寫的數千行代碼的代碼庫可能無法正確檢查內存泄漏。
您可以使用一些內存管理技術:
addEventListener
,請始終調用removeEventListener
除非您要綁定事件的DOM節點稍后被銷毀。 遵循這三個指導原則將使您在處理JavaScript的職業生涯中大半路而無任何與內存相關的問題:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.