道非道 非常道

          勤思、謹(jǐn)言、慎行、厚積、薄發(fā)

          統(tǒng)計

          web

          天圓

          經(jīng)濟 政治 軍事

          鍵康

          javascript 垃圾收集( 內(nèi)存釋放 )

          轉(zhuǎn)自:http://www.microsoft.com/china/msdn/library/webservices/WebApp/mac0301WebQA.mspx?mfr=true

          問:我有一些關(guān)于 JScript® 中垃圾回收的問題。我認(rèn)為在 Microsoft® Internet Explorer 6.0 中有內(nèi)存泄漏,但在另一方面,它可能是循環(huán)引用問題。在我的代碼中,我假設(shè)“new Object()”屬于 JScript,而“document.createElement”屬于 Internet Explorer DOM,因此 JScript 中的垃圾回收器無法釋放 DOM 元素。這正確嗎?避免這一問題的最佳方法是什么呢?

          當(dāng)您將代碼加載到 Internet Explorer 6.0 中并單擊“Refresh”時,您可以在“Task Manager”中觀察到內(nèi)存增加:

          <html>
          <body>
          <script type="text/JScript">
          for (i=0; i<1000; i++) { // this loop enforces the effect
          var model = new Object();
          var element = document.createElement("<br>");
          model.myElement = element;
          element.myModel = model;
          model = null;
          element = null;
          }
          </script>
          </body>
          </html>

          答:這不是內(nèi)存泄漏。您正在頁面上創(chuàng)建新文本一千次!這會使頁面變大。如果您創(chuàng)建了許多無法獲得也無法釋放的對象,那才是內(nèi)存泄漏。在 這里,您將創(chuàng)建許多元素,Internet Explorer 需要保存它們以正確呈現(xiàn)頁面。Internet Explorer 并不知道您以后不會運行操縱您剛剛創(chuàng)建的所有這些對象的腳本。

          當(dāng)頁面消失時(當(dāng)您瀏覽完,離開瀏覽器時)會釋放內(nèi)存。它不會泄漏。當(dāng)銷毀頁面時,會中斷循環(huán)引用。









          posted on 2009-12-02 15:10 星期五 閱讀(370) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 中牟县| 宁河县| 昌平区| 蓬溪县| 安岳县| 吴堡县| 杭州市| 西昌市| 襄汾县| 北流市| 溧水县| 广宁县| 庆城县| 保定市| 万盛区| 宜良县| 青龙| 大港区| 延川县| 高陵县| 舞钢市| 潍坊市| 青阳县| 马公市| 潢川县| 北宁市| 定日县| 新蔡县| 法库县| 墨玉县| 米脂县| 铁岭市| 葵青区| 永康市| 邢台市| 韶山市| 四会市| 西充县| 东城区| 松阳县| 乐平市|