成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

javascript垃圾回收機(jī)制GC

wenzi / 1771人閱讀

摘要:執(zhí)行階段遍歷所有對(duì)象,對(duì)于不可訪問的對(duì)象進(jìn)行回收。該機(jī)制執(zhí)行操作耗時(shí)左右。引擎中使用兩種優(yōu)化方法分代回收增量目的是通過對(duì)象的使用頻率存在時(shí)長區(qū)分新生代與老生代對(duì)象。多回收新生代區(qū),少回收老生代區(qū),減少每次需遍歷的對(duì)象,從而減少每次的耗時(shí)。

GC( Garbage Collection ),GC執(zhí)行時(shí),中斷代碼,停止其他操作。執(zhí)行階段遍歷所有對(duì)象,對(duì)于不可訪問的對(duì)象進(jìn)行回收。該機(jī)制執(zhí)行操作耗時(shí)100ms左右。V8引擎中使用兩種優(yōu)化方法:

分代回收;

增量GC;

目的是通過對(duì)象的使用頻率、存在時(shí)長區(qū)分新生代與老生代對(duì)象。多回收新生代區(qū)(young generation),少回收老生代區(qū)(tenured generation),減少每次需遍歷的對(duì)象,從而減少每次GC的耗時(shí)。

把需要長耗時(shí)的遍歷、回收操作拆分運(yùn)行,減少中斷時(shí)間,但是會(huì)增大上下文切換開銷.

回收方法
(1)引用計(jì)次
當(dāng)對(duì)象被引用次數(shù)為0時(shí),就被回收。潛在的一個(gè)問題是:循環(huán)引用時(shí),兩個(gè)對(duì)象都至少被引用了一次,將不能自動(dòng)被回收。所以導(dǎo)致,我們常講的內(nèi)存泄露。
(2)標(biāo)記清除
這是當(dāng)前主流的GC算法,V8里面就是用這種。當(dāng)對(duì)象,無法從根對(duì)象沿著引用遍歷到,即不可達(dá)(unreachable),進(jìn)行清除。對(duì)于上面的例子,fn() 里面的 a 和 b 在函數(shù)執(zhí)行完畢后,就不能通過外面的上下文進(jìn)行訪問了,所以就可以清除了。

解釋型語言(例如 JavaScript)來說, 通過詞法分析 -> 語法分析 -> 語法樹,就可以開始解釋執(zhí)行了。
語法分析成 AST (Abstract Syntax Tree)

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/108342.html

相關(guān)文章

  • 簡述JavaScript垃圾回收機(jī)制

    摘要:關(guān)鍵是釋放內(nèi)存這一步,各種語言都有自己的垃圾回收簡稱機(jī)制。用的是這種,在字末位進(jìn)行標(biāo)識(shí),為指針。對(duì)于而言,最初的垃圾回收機(jī)制,是基于引用計(jì)次來做的。老生代的垃圾回收,分兩個(gè)階段標(biāo)記清理有和這兩種方式。 不管是高級(jí)語言,還是低級(jí)語言。內(nèi)存的管理都是: 分配內(nèi)存 使用內(nèi)存(讀或?qū)懀?釋放內(nèi)存 前兩步,大家都沒有太大異議。關(guān)鍵是釋放內(nèi)存這一步,各種語言都有自己的垃圾回收(garbage ...

    wenshi11019 評(píng)論0 收藏0
  • 【譯文】Node.js垃圾回收機(jī)制-基礎(chǔ)

    摘要:正好最近在學(xué)習(xí)的各種實(shí)現(xiàn)原理,在這里斗膽翻譯一篇垃圾回收機(jī)制原文鏈接。自動(dòng)管理的機(jī)制中,通常都會(huì)包含垃圾回收機(jī)制。二垃圾回收機(jī)制的概念垃圾回收,是一種自動(dòng)管理應(yīng)用程序所占內(nèi)存的機(jī)制,簡稱方便起見,本文均采用此簡寫。 最近關(guān)注了一個(gè)國外技術(shù)博客RisingStack里面有很多高質(zhì)量,且對(duì)新手也很friendly的文章。正好最近在學(xué)習(xí)Node.js的各種實(shí)現(xiàn)原理,在這里斗膽翻譯一篇Node...

    haobowd 評(píng)論0 收藏0
  • 【V8引擎】淺析Chrome V8引擎中的垃圾回收機(jī)制和內(nèi)存泄露優(yōu)化策略

    摘要:一前言的垃圾回收機(jī)制使用垃圾回收機(jī)制來自動(dòng)管理內(nèi)存。垃圾回收器只會(huì)針對(duì)新生代內(nèi)存區(qū)老生代指針區(qū)以及老生代數(shù)據(jù)區(qū)進(jìn)行垃圾回收。分別對(duì)新生代和老生代使用不同的垃圾回收算法來提升垃圾回收的效率。 V8 實(shí)現(xiàn)了準(zhǔn)確式 GC,GC 算法采用了分代式垃圾回收機(jī)制。因此,V8 將內(nèi)存(堆)分為新生代和老生代兩部分。 一、前言 V8的垃圾回收機(jī)制:JavaScript使用垃圾回收機(jī)制來自動(dòng)管理內(nèi)存。垃...

    qingshanli1988 評(píng)論0 收藏0
  • JavaScript 闖關(guān)記》之垃圾回收和內(nèi)存管理

    摘要:內(nèi)存回收此時(shí),局部變量就沒有存在的必要了,因此可以釋放它們的內(nèi)存以供將來使用。局部變量會(huì)在它們離開執(zhí)行環(huán)境時(shí)自動(dòng)被解除引用,如下面這個(gè)例子所示手工解除的引用由于局部變量在函數(shù)執(zhí)行完畢后就離開了其執(zhí)行環(huán)境,因此無需我們顯式地去為它解除引用。 JavaScript 具有自動(dòng)垃圾收集機(jī)制(GC:Garbage Collecation),也就是說,執(zhí)行環(huán)境會(huì)負(fù)責(zé)管理代碼執(zhí)行過程中使用的內(nèi)存。而...

    Sleepy 評(píng)論0 收藏0
  • JS中的垃圾回收與內(nèi)存泄漏

    摘要:介紹瀏覽器的具有自動(dòng)垃圾回收機(jī)制,也就是說,執(zhí)行環(huán)境會(huì)負(fù)責(zé)管理代碼執(zhí)行過程中使用的內(nèi)存。中的內(nèi)存泄漏問題程序的內(nèi)存溢出后,會(huì)使某一段函數(shù)體永遠(yuǎn)失效取決于當(dāng)時(shí)的代碼運(yùn)行到哪一個(gè)函數(shù),通常表現(xiàn)為程序突然卡死或程序出現(xiàn)異常。 showImg(https://segmentfault.com/img/remote/1460000018932880?w=4400&h=3080); 1. 介紹 瀏...

    xiaolinbang 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<