一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

Javascript內(nèi)存泄露

  英文原文:JavaScript Memory Leaks

  1. 什么是內(nèi)存泄露?

  內(nèi)存泄露是指分配給應(yīng)用的內(nèi)存不能被重新分配,即使在內(nèi)存已經(jīng)不被使用的時(shí)候。正常情況下,垃圾回收器在 DOM 元素和 event 處理器不被引用或訪問的時(shí)候回收它們。但是,IE 的早些版本(IE7和之前)中內(nèi)存泄露是很容易出現(xiàn)的,因?yàn)閮?nèi)存管理器不能正確理解 Javascript 生命周期而且在周期被打破(可以通過賦值為 null 實(shí)現(xiàn))前不會(huì)回收內(nèi)存。

  2. 為什么你需要注意它?

  在大型 Web 應(yīng)用程序中內(nèi)存泄露是一種常見的無意的編程錯(cuò)誤。內(nèi)存泄露會(huì)降低 Web 應(yīng)用程序的性能,直到浪費(fèi)的內(nèi)存超過了系統(tǒng)所能分配的,應(yīng)用程序?qū)⒉荒苁褂谩W鳛橐晃?Web 開發(fā)者,開發(fā)一個(gè)滿足功能要求的應(yīng)用程序只是第一步,性能要求和 Web 應(yīng)用程序的成功是同樣重要的,更何況它可能會(huì)導(dǎo)致應(yīng)用程序錯(cuò)誤或?yàn)g覽器崩潰。

  3. Javascript 中出現(xiàn)內(nèi)存泄露的主要原因是什么?

  1) 循環(huán)引用

  一個(gè)很簡(jiǎn)單的例子:一個(gè) DOM 對(duì)象被一個(gè) Javascript 對(duì)象引用,與此同時(shí)又引用同一個(gè)或其它的 Javascript 對(duì)象,這個(gè) DOM 對(duì)象可能會(huì)引發(fā)內(nèi)存泄露。這個(gè) DOM 對(duì)象的引用將不會(huì)在腳本停止的時(shí)候被垃圾回收器回收。要想破壞循環(huán)引用,引用 DOM 元素的對(duì)象或 DOM 對(duì)象的引用需要被賦值為 null。

  2) Javascript 閉包

  因?yàn)?Javascript 范圍的限制,許多實(shí)現(xiàn)依賴 Javascript 閉包。如果你想了解更多閉包方面的問題,請(qǐng)查看我的前面的文章 JavaScript Scope and Closure 。

  閉包可以導(dǎo)致內(nèi)存泄露是因?yàn)閮?nèi)部方法保持一個(gè)對(duì)外部方法變量的引用,所以盡管方法返回了,內(nèi)部方法還可以繼續(xù)訪問在外部方法中定義的私有變量。對(duì) Javascript 程序員來說最好的做法是在頁面重載前斷開所有的事件處理器。

  3) DOM 插入順序

  當(dāng) 2 個(gè)不同范圍的 DOM 對(duì)象附加到一起的時(shí)候,一個(gè)臨時(shí)的對(duì)象會(huì)被創(chuàng)建。這個(gè) DOM 對(duì)象改變范圍到 document 時(shí),那個(gè)臨時(shí)對(duì)象就沒用了。也就是說, DOM 對(duì)象應(yīng)該按照從當(dāng)前頁面存在的最上面的 DOM 元素開始往下直到剩下的 DOM 元素的順序添加,這樣它們就總是有同樣的范圍,不會(huì)產(chǎn)生臨時(shí)對(duì)象。

  4) 如何檢測(cè)?

  內(nèi)存泄露對(duì)開發(fā)者來說一般很難檢測(cè),因?yàn)樗鼈兪怯纱罅看a中的一些意外的錯(cuò)誤引起的,但它在系統(tǒng)內(nèi)存不足前并不影響程序的功能。這就是為什么會(huì)有人在很長(zhǎng)時(shí)間的測(cè)試期中收集應(yīng)用程序性能指標(biāo)來測(cè)試性能。

  最簡(jiǎn)單的檢測(cè)內(nèi)存泄露的方式是用任務(wù)管理器檢查內(nèi)存使用情況。在 Chrome 瀏覽器的新選項(xiàng)卡中打開應(yīng)用并查看內(nèi)存使用量是不是越來越多。還有其他的調(diào)試工具提供內(nèi)存監(jiān)視器,比如 Chrome 開發(fā)者工具。這是谷歌開者這網(wǎng)站中的堆分析的特性的教程。

  參考:

  1. http://Javascript.crockford.com/memory/leak.html

  2. http://msdn.microsoft.com/en-us/library/Bb250448

  3. http://www.ibm.com/developerworks/web/library/wa-memleak/

  (OsChina.NET 編譯)

it知識(shí)庫Javascript內(nèi)存泄露,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 99在线精品免费视频九九视 | 成人在线午夜 | 天天色综合图片 | 国产成人综合在线视频 | 午夜欧美福利视频 | 亚洲首页| 久久久网| 99久久国产综合精麻豆 | 在线国产一区二区 | 永久黄网站色视频免费观看 | 欧美黑人巨大xxxxx | 男女牲交一级毛片 | 人人爱天天做夜夜爽2020麻豆 | 久久机热这里只有精品无需 | 韩国一级毛片免费完整视频 | 在线一区免费视频播放 | 天天摸天天看天天爽 | 伊人99在线 | 日韩激情影院 | 精品在线观看免费 | 成人免费在线观看视频 | 亚洲狠狠婷婷综合久久久久网站 | 亚洲黄网视频 | 又黄又爽的男女视频 | 久热精品6 | 深爱五月激情五月 | 国产成人91高清精品免费 | 91精品国产乱码久久久久久 | 成人在免费观看视频国产 | 91久久精品国产91性色tv | 午夜欧美| 黄色影院在线观看视频 | 在线免费观看黄色网址 | 2021国产在线视频 | 精彩视频一区二区三区 | 99国产国人青青视频在线观看 | 伊人久久大香 | 91视频播放 | 亚洲午夜免费视频 | 欧美激情视频在线观看一区二区三区 | 人成精品视频三区二区一区 |