日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

談談JavaScript中的垃圾回收機制

瀏覽:122日期:2023-10-13 08:29:22

JavaScript 具有自動垃圾收集機制,也就是說,執行環境會負責管理代碼執行過程中使用的內存。

在編寫 JavaScript 程序時,開發人員不用再關心內存使用問題,所需內存的分配以及無用內存的回收完全實現了自動管理。

這種垃圾收集機制的原理其實很簡單:找出那些不再繼續使用的變量,然后釋放其占用的內存。為此,垃圾收集器會按照固定的時間間隔(或代碼執行中預定的收集時間), 周期性地執行這一操作。

具體到瀏覽器中的實現,則通常有兩個策略,分別為標記清除和引用計數。

一、標記清除

JavaScript 中最常用的垃圾收集方式是標記清除(mark-and-sweep)。當變量進入環境(例如,在函數中聲明一個變量)時,就將這個變量標記為“進入環境”。而當變量離開環境時,則將其標記為“離開環境”。

垃圾收集器在運行的時候會給存儲在內存中的所有變量都加上標記。可以使用任何標記方式,比如,可以通過翻轉某個特殊的位來記錄一個變量何時進入環境, 或者使用一個“進入環境的”變量列表及一個“離開環境的”變量列表來跟蹤哪個變量發生了變化。

然后,它會去掉環境中的變量以及被環境中的變量引用的變量的標記。而在此之后再被加上標記的變量將被視為準備刪除的變量,原因是環境中的變量已經無法訪問到這些變量了。

最后,垃圾收集器完成內存清除工作,銷毀那些帶標記的值并回收它們所占用的內存空間。

二、引用計數

另一種不太常見的垃圾收集策略叫做引用計數(reference counting)。引用計數的含義是跟蹤記錄每個值被引用的次數。

當聲明了一個變量并將一個引用類型值賦給該變量時,則這個值的引用次數就是 1。 如果同一個值又被賦給另一個變量,則該值的引用次數加 1。相反,如果包含對這個值引用的變量又取得了另外一個值,則這個值的引用次數減 1。

當這個值的引用次數變成 0 時,則說明沒有辦法再訪問這個值了,因而就可以將其占用的內存空間回收回來。

這樣,當垃圾收集器下次再運行時,它就會釋放那些引用次數為零的值所占用的內存。

存在的問題:只要在 IE 中涉及 COM(Component Object Model,組件對象模型)對象,就會存在循環引用的問題。如下面代碼所示:

var element = document.getElementById('some_element');var myObject = new Object();myObject.element = element;element.someObject = myObject;

這個例子在一個 DOM 元素(element)與一個原生 JavaScript 對象(myObject)之間創建了循環引用。

其中,變量 myObject 有一個名為 element 的屬性指向 element 對象。

而變量 element 也有 一個屬性名叫 someObject 回指 myObject。

由于存在這個循環引用,即使將例子中的 DOM 從頁面中移除,它也永遠不會被回收。

解決方法:最好是在不使用它們的時候手工斷開原生 JavaScript 對象與 DOM 元素之間的連接。

myObject.element = null;element.someObject = null;

將變量設置為 null 意味著切斷變量與它此前引用的值之間的連接。當垃圾收集器下次運行時,就會刪除這些值并回收它們占用的內存。

三、管理內存

確保占用最少的內存可以讓頁面獲得更好的性能。而優化內存占用的最佳方式,就是為執行中的代碼只保存必要的數據。

一旦數據不再有用,最好通過將其值設置為 null 來釋放其引用——這個做法叫做解除引用(dereferencing)。

這一做法適用于大多數全局變量和全局對象的屬性。局部變量會在它們離開執行環境時自動被解除引用,如下面這個例子所示:

function createPerson(name){ var localPerson = new Object(); localPerson.name = name; }var globalPerson = createPerson('Nicholas');globalPerson = null; // 手工解除globalPerson 的引用

   變量 globalPerson 取得了 createPerson()函數返回的值。在 createPerson() 函數內部,我們創建了一個對象并將其賦給局部變量localPerson,然后又為該對象添加了一個名為 name 的屬性。最后,當調用這個函數時,localPerson 以函數值的形式返回并賦給全局變量 globalPerson。

由于 localPerson 在 createPerson()函數執行完畢后就離開了其執行環境,因此無需我們顯式地去為它解除引用。

但是對于全局變量 globalPerson 而言,則需要我們在不使用它的時候手工為它解除引用,這也正是上面例子中最后一行代碼的目的。

以上就是談談JavaScript中的垃圾回收機制的詳細內容,更多關于JavaScript 垃圾回收的資料請關注好吧啦網其它相關文章!

標簽: JavaScript
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
蜜臀av在线播放一区二区三区| 国产精品亚洲四区在线观看| 国产精成人品2018| 国产高清精品二区| 日本一区二区免费高清| 国产精品国产三级国产在线观看| 91视频久久| 久久精品不卡| 欧洲一区二区三区精品| 日韩欧美1区| 蜜臀91精品国产高清在线观看| 91精品1区| 乱人伦精品视频在线观看| 日本不卡中文字幕| 久久精品一区二区三区中文字幕| 特黄毛片在线观看| 亚洲欧洲一区| 日韩 欧美一区二区三区| 国产欧美日韩精品一区二区三区 | 日本免费新一区视频| 国产精品成人国产| 中国字幕a在线看韩国电影| 久久久天天操| 蜜臀久久99精品久久久久宅男| 日韩av一级片| 一本大道色婷婷在线| 蜜臀国产一区二区三区在线播放| 国产精品日韩精品在线播放| 中文字幕在线高清| 亚洲精品影视| 国产高潮在线| 青青草伊人久久| 国产麻豆久久| 69堂免费精品视频在线播放| 久久精品观看| 欧美午夜三级| 国产精品av久久久久久麻豆网| 亚洲日本久久| 婷婷激情一区| 国产欧美日韩免费观看| 亚洲成人三区| 久久久精品国产**网站| 免费美女久久99| 精品久久91| 中文字幕成人| 日韩精品一区二区三区免费观影 | 日韩久久精品网| 日韩精品成人| 国产亚洲一区二区手机在线观看 | 国产精品sss在线观看av| 丝袜美腿一区| 国产欧美高清| 噜噜噜躁狠狠躁狠狠精品视频| 久久精品五月| 亚洲精品伦理| 亚洲国产专区校园欧美| 欧美aaaaaa午夜精品| 免费精品视频| 久久高清免费| 久久这里只有精品一区二区| 免费在线看一区| 久久精品观看| 精品中文在线| 国产日韩一区二区三免费高清| 日韩精品一二区| 九九久久电影| 日本欧美不卡| caoporn视频在线| 国产极品嫩模在线观看91精品| 亚洲精品一区二区在线播放∴| 国产综合婷婷| 欧产日产国产精品视频| 老司机精品视频网| 日韩av网站在线免费观看| 黄色av一区| 日韩啪啪电影网| 成人污污视频| 老鸭窝一区二区久久精品| 日韩精品视频中文字幕| 国产亚洲精品v| 好吊视频一区二区三区四区| 亚洲啊v在线| 91综合网人人| 国产一区二区三区国产精品| 国产精品chinese| 国产精品黄色| 欧美成人精品午夜一区二区| 日韩va亚洲va欧美va久久| 中文字幕一区二区av| 一区免费视频| 欧美日韩国产高清| 在线亚洲欧美| 三级在线观看一区二区| 久久不射中文字幕| 中文字幕免费精品| 日韩成人午夜精品| 国产精品亚洲片在线播放| 国产精品一区免费在线| 麻豆传媒一区二区三区| 日韩av片子| 久久国产主播| 国产美女精品| 日本一区中文字幕| 91精品一区| 欧美日韩一区二区高清| 欧美日韩一区二区三区四区在线观看| 日本aⅴ免费视频一区二区三区| 91精品在线免费视频| 国产日韩精品视频一区二区三区| 国产精品免费大片| 成人国产精品一区二区网站| 日韩精品电影| 亚洲国产一区二区三区在线播放 | 国产一区二区三区亚洲综合| 久久电影tv| 伊人影院久久| 日本欧美久久久久免费播放网| 欧美三区不卡| 久久久久免费| 91久久久精品国产| 亚洲人亚洲人色久| 美女久久久久久 | 亚洲国内欧美| 亚洲精品伦理| 久久精品欧洲| 亚洲高清成人| 丝袜国产日韩另类美女| 日韩免费精品| 欧美激情国产在线| 黄色亚洲免费| 国产精品美女在线观看直播| 日本美女一区| 综合国产视频| 岛国精品一区| 国产精品日韩欧美一区| 久久精品xxxxx| 日韩精品欧美激情一区二区| 亚洲精选久久| 国产一区丝袜| 丝袜诱惑制服诱惑色一区在线观看 | 亚洲精品欧美| 精品中文字幕一区二区三区 | 欧美亚洲国产激情| 日韩欧美中文字幕一区二区三区 | 亚洲精品国产嫩草在线观看| 欧美中文日韩| 国产成人精选| 亚洲免费毛片| 精品亚洲美女网站| 91精品国产一区二区在线观看| 欧美日韩精品免费观看视完整| 免费不卡在线观看| 高清精品久久| 日本午夜精品视频在线观看| 欧洲一区二区三区精品| 日韩精品成人| 欧美日韩高清| 精品一区电影| 蜜桃视频在线观看一区二区| 国产精品成人国产| 黑丝一区二区| 国产成年精品| 日韩激情精品| 欧美~级网站不卡| 久久激情综合网| 午夜影院欧美| av在线最新| 国产精品密蕾丝视频下载| 亚洲免费播放| 亚洲成人不卡| 精品日韩一区| 国产亚洲人成a在线v网站 | 伊人精品在线| 精品视频国产| 久久激情综合网| 日本欧美在线看| 亚洲福利免费| 国产拍在线视频| 国产精品magnet| 亚州欧美在线| 日韩一级欧洲| 国产中文一区| 日韩欧美午夜| 精品伊人久久| 欧美国产视频| 国产日韩欧美一区二区三区 | 欧美亚洲二区| 美国av一区二区| 午夜av一区| 不卡在线一区| 中文字幕系列一区| 欧美aa一级| 日韩一区二区三区免费播放| 国产成人免费av一区二区午夜| 国产精品香蕉| 国产精品入口久久| 国产精品分类| 蜜桃久久久久| 精品国产麻豆| 精品中文字幕一区二区三区四区|