摘要:前言垃圾回收機(jī)制在工作中很少碰到,看到阮一峰的書(shū)中有寫,記錄下。垃圾回收機(jī)制與垃圾回收機(jī)制只考慮對(duì)象的強(qiáng)引用垃圾回收機(jī)制依賴引用計(jì)數(shù),當(dāng)計(jì)數(shù)為,則自動(dòng)回收該對(duì)象占用的內(nèi)存。里面的引用,都不計(jì)入垃圾回收機(jī)制,所以就不存在這個(gè)問(wèn)題。
前言:
垃圾回收機(jī)制在工作中很少碰到,看到阮一峰的書(shū)中有寫,記錄下。
垃圾回收機(jī)制與WeakSet
(1)垃圾回收機(jī)制只考慮對(duì)象的強(qiáng)引用
(2)垃圾回收機(jī)制依賴「引用計(jì)數(shù)」,當(dāng)計(jì)數(shù)為0,則GC自動(dòng)回收該對(duì)象占用的內(nèi)存。
(3)當(dāng)忘記取消引用(a=null),就會(huì)導(dǎo)致內(nèi)存無(wú)法釋放,從而引發(fā)內(nèi)存泄漏。
WeakSet中的對(duì)象都是弱引用,即垃圾回收機(jī)制不考慮WeakSet對(duì)該對(duì)象的引用,也就是說(shuō),如果其他對(duì)象都不再引用該對(duì)象,那么垃圾回收機(jī)制會(huì)自動(dòng)回收該對(duì)象所占用的內(nèi)存,不考慮該對(duì)象還存在于WeakSet之中。
這是因?yàn)槔厥諜C(jī)制依賴引用計(jì)數(shù),如果一個(gè)值的引用次數(shù)不為0,垃圾回收機(jī)制就不會(huì)釋放這塊內(nèi)存。結(jié)束使用該值之后,有時(shí)會(huì)忘記取消引用,導(dǎo)致內(nèi)存無(wú)法釋放,進(jìn)而可能會(huì)引發(fā)內(nèi)存泄漏。WeakSet里面的引用,都不計(jì)入垃圾回收機(jī)制,所以就不存在這個(gè)問(wèn)題。因此,WeakSet適合臨時(shí)存放一組對(duì)象,以及存放跟對(duì)象綁定的信息。
只要這些對(duì)象在外部消失,它在WeakSet里面的引用就會(huì)自動(dòng)消失。
由于上面這個(gè)特點(diǎn),WeakSet的成員是不適合引用的,因?yàn)樗鼤?huì)隨時(shí)消失。另外,由于WeakSet內(nèi)部有多少個(gè)成員,取決于垃圾回收機(jī)制有沒(méi)有運(yùn)行,運(yùn)行前后很可能成員個(gè)數(shù)是不一樣的,而垃圾回收機(jī)制何時(shí)運(yùn)行是不可預(yù)測(cè)的,因此ES6規(guī)定WeakSet不可遍歷。
參考:http://es6.ruanyifeng.com/#docs/set-map
(完)
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/105621.html
摘要:所有這些類型,在內(nèi)部統(tǒng)一用一個(gè)叫做的結(jié)構(gòu)表示,在源代碼中這個(gè)結(jié)構(gòu)名稱為。的具體定義在源代碼的文件中,下面是相關(guān)代碼的摘錄。 【轉(zhuǎn)】淺談PHP5中垃圾回收算法(Garbage Collection)的演化 前言 PHP是一門托管型語(yǔ)言,在PHP編程中程序員不需要手工處理內(nèi)存資源的分配與釋放(使用C編寫PHP或Zend擴(kuò)展除外),這就意味著PHP本身實(shí)現(xiàn)了垃圾回收機(jī)制(Garbage C...
摘要:新生代的對(duì)象為存活時(shí)間較短的對(duì)象,老生代中的對(duì)象為存活時(shí)間較長(zhǎng)或常駐內(nèi)存的對(duì)象。分別對(duì)新生代和老生代使用不同的垃圾回收算法來(lái)提升垃圾回收的效率。如果指向老生代我們就不必考慮它了。 這篇文章的所有內(nèi)容均來(lái)自 樸靈的《深入淺出Node.js》及A tour of V8:Garbage Collection,后者還有中文翻譯版V8 之旅: 垃圾回收器,我在這里只是做了個(gè)記錄和結(jié)合 垃圾回收...
摘要:垃圾回收所謂垃圾就是指通過(guò)循環(huán)引用自己引用自己,目前只在類型中有出現(xiàn)的形式而導(dǎo)致永遠(yuǎn)不為。當(dāng)出現(xiàn)垃圾之后,的引擎有對(duì)應(yīng)的垃圾回收機(jī)制。觸發(fā)這個(gè)機(jī)制的時(shí)機(jī)是每次出現(xiàn)減少時(shí)候。 自嘲)。。。。。2333,我覺(jué)得這是因?yàn)樵趐hp語(yǔ)言層面就幫我們解決了內(nèi)存回收的問(wèn)題,但這讓我在和java大牛們吹牛逼的時(shí)候,聽(tīng)到什么內(nèi)存泄露。。。。(納尼,我tmd怎么從來(lái)沒(méi)遇見(jiàn)過(guò))一臉懵逼。 本人小菜,如果下面...
摘要:一語(yǔ)法轉(zhuǎn)換到語(yǔ)法從轉(zhuǎn)換到會(huì)用到,所以先熟悉下到的轉(zhuǎn)換。對(duì)于庫(kù)作者而言,凍結(jié)對(duì)象可防止有人修改庫(kù)的核心對(duì)象。 showImg(https://segmentfault.com/img/remote/1460000019757204); 一、JSX語(yǔ)法轉(zhuǎn)換到Js語(yǔ)法從 JSX 轉(zhuǎn)換到 JS 會(huì)用到React.createElement(),所以先熟悉下 JSX 到 JS 的轉(zhuǎn)換。 這邊是 ...
摘要:將他們放在堆中是為了不影響棧的效率。接著是臨時(shí)空間函數(shù)執(zhí)行的時(shí)候,會(huì)臨時(shí)開(kāi)辟一塊內(nèi)存空間,這塊內(nèi)存空間長(zhǎng)得和外面這個(gè)一樣,也有自己的棧堆,當(dāng)函數(shù)運(yùn)行完就銷毀。中的內(nèi)存第一個(gè)部分還是和上面的一樣,有棧堆運(yùn)行時(shí)環(huán)境,另外還有一個(gè)緩沖區(qū)存放。 0.前言 主要結(jié)合了內(nèi)存的概念講了js的一些的很簡(jiǎn)單、但是又不小心就犯錯(cuò)的地方。結(jié)論:js執(zhí)行順序,先定義,后執(zhí)行,從上到下,就近原則。閉包可以讓外部...
閱讀 1167·2021-10-20 13:48
閱讀 2173·2021-09-30 09:47
閱讀 3104·2021-09-28 09:36
閱讀 2342·2019-08-30 15:56
閱讀 1195·2019-08-30 15:52
閱讀 2020·2019-08-30 10:48
閱讀 607·2019-08-29 15:04
閱讀 564·2019-08-29 12:54