道非道 非常道

          勤思、謹言、慎行、厚積、薄發

          統計

          web

          天圓

          經濟 政治 軍事

          鍵康

          javascript 垃圾收集( 內存釋放 )

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

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

          當您將代碼加載到 Internet Explorer 6.0 中并單擊“Refresh”時,您可以在“Task Manager”中觀察到內存增加:

          <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>

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

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









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


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


          網站導航:
           
          主站蜘蛛池模板: 靖州| 高要市| 上思县| 宿州市| 辽阳市| 桂东县| 东丰县| 施甸县| 襄垣县| 太和县| 郁南县| 东源县| 荣昌县| 鄂托克前旗| 台湾省| 阿克陶县| 沙雅县| 永昌县| 双峰县| 蒙城县| 台东市| 垫江县| 丹东市| 阳朔县| 锡林浩特市| 麻栗坡县| 龙口市| 香港 | 聂拉木县| 甘肃省| 绥宁县| 油尖旺区| 汤阴县| 宾川县| 呼和浩特市| 子长县| 鄂伦春自治旗| 衡阳市| 古浪县| 手游| 故城县|