師姐安排我做乙個很簡單,但是很麻煩的工作,檢測ie記憶體洩露,記憶體洩露的方式不是很多,但是要真正查詢到錯誤源不是很容易。
檢測記憶體洩露的時候,使用的工具是drip0.5,在檢測洩露的時候,有個很令人氣憤的事情,在我的t41上檢測不出來,但在t61上報
了好多錯,令我很尷尬!
經過檢測,現總結經驗如下:
1:最容易檢查的錯誤是類似於new了乙個物件後,未delete該物件。js中最多出現的是,createlement()
如:var toolflag=document.createelement("img");
toolflag.id="toolflag";
toolflag.src="images/move.gif";
toolflag.style.position="absolute";
toolflag.style.zindex="1000";
toolflag.style.display = "block";
toolflag.style.left = "-100px";
toolflag.style.top = "-100px";
//釋放資源
toolflag = null;
//如果不釋放的話,drip就會檢測到洩露
2:如果new的物件是乙個全域性的變數,那釋放的時候將很複雜
如:window.arr = new array();
這個window.arr可能很多地方使用,而且可能在程式執行期間,還有用,所以我自己認為最好實在頁面退出前釋放,
在new物件的地方新增乙個釋放函式,然後可以在主框架中新增 onunload 函式來呼叫那個釋放的函式,
3:ajax中新建的請求物件最好在請求完後釋放,如果不釋放的話,每次ajax請求都會重新生成乙個物件,記憶體將會增長很快。
當然釋放物件必須是在該ajax完成後(無論成功或者失敗)
如://add by xcl
function ajaxrequest(method,url,data,callback)
//釋放ajax物件,
IE8中的記憶體洩露
最近開發的時候對頁面使用了定時的區域性更新,結果在ie6,7和firefox下,一切正常,而在ie8下過上幾個小時就瀏覽器就崩潰了,顯示是記憶體溢位,我以為是 寫的不好導致記憶體洩露,但是ie6,7又正常,調查了一下,原來這是ie8的bug。size large 問題點 size 在ie8中,生成特...
IE事件註冊相關的記憶體洩露總結
經過一上午的艱苦試驗驗證,得出如下結論 1 將元素傳入閉包,並在其中註冊事件,這是導致記憶體洩露的根源之一 另一必要條件是 元素必須脫離文件樹,亦即類似執行了語句 elm.parentnode.removechild elm 2 解決方式 避免上述情形 在window.onunload中取消事件註冊...
記憶體洩露檢測
c 中檢測記憶體洩漏可以引入系統定義的巨集來檢視,內存在哪個位置洩漏 檔案開始處加入下列定義 define crtdbg map alloc include include 程式退出時加入以下函式 crtdumpmemoryleaks 如果有洩漏會顯示 記憶體洩漏是程式設計中常常見到的乙個問題,我所...