在ie下的js程式設計中,以下的程式設計方式都會造成即使關閉ie也無法釋放記憶體的問題,下面分類給出:
1、給dom物件新增的屬性是乙個物件的引用。範例:
var myobject = {};
document.getelementbyid('mydiv').myprop = myobject;
解決方法:
在window.onunload事件中寫上: document.getelementbyid('mydiv').myprop = null;
2、dom物件與js物件相互引用。範例:
function encapsulator(element)
new encapsulator(document.getelementbyid('mydiv'));
解決方法:
在onunload事件中寫上: document.getelementbyid('mydiv').myprop = null;
3、給dom物件用attachevent繫結事件。範例:
for(i = 0; i < 5000; i++)
這種方式相當於定義了5000個屬性!
解決方法:
其實沒什麼解決方法:p~~~就是程式設計的時候盡量避免出現這種情況咯~~
說明:大家可以到上面這個位址中看到詳細的說明,包括範例和圖例都有。只是我英文不太好,看不太懂,如果我上述有失誤或有需要補充的地方請大家指出。
2、對於第一條,事實上包括 element.onclick = funcref 這種寫法也算在其中,因為這也是乙個對物件的引用。在頁面onunload時應該釋放掉。
3、對於第三條,在msdn的英文說明中好像是說即使呼叫detachevent也無法釋放記憶體,因為在attachevent的時候就已經造成記憶體「leak」了,不過detachevent後情況還是會好一點。不知道是不是這樣,請英文好的親能夠指出。
4、在實際程式設計中,這些記憶體問題的實際影響並不大,尤其是給客戶使用時,客戶對此絕不會有察覺,然而這些問題對於程式設計師來說卻始終是個心病 --- 有這樣的bug心裡總會覺得不舒服吧?能解決則給與解決,這樣是最好的。事實上我在webfx.eae.net這樣頂級的js原始碼站點中,在它們的原始碼裡都會看到採用上述解決方式進行記憶體的釋放管理。
**
在Jni中需注意的記憶體問題
jni中需注意的記憶體問題 以下函式都是需要成對出現的 getstringutfchars releasestringutfchars getstringcritical releasestringcritical getstringregion setstringregion getarrayel...
c程式設計中需注意的問題
1.對於指標變數,乙個非常中的操作就是要判斷其有效性,即是否為空指標。如利用動態記憶體申請運算子申請記憶體後,需要首先對記憶體是否申請成功進行判斷。2.static 再c語言中宣告函式時,該static 函式只具有檔案作用域。及該函式的作用域被限制再宣告它的模組內。3.變數型別的自動轉換 當乙個操作...
js在IE中的記憶體釋放問題
在ie下的js程式設計中,以下的程式設計方式都會造成即使關閉ie也無法釋放記憶體的問題,下面分類給出 1 給dom物件新增的屬性是乙個物件的引用。範例 var myobject document.getelementbyid mydiv myprop myobject 解決方法 在window.on...