国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

餐館中的服務員---垃圾回收

JaysonWang / 615人閱讀

摘要:那此時服務員清理垃圾以供接下來的顧客使用,便是垃圾回收。垃圾回收器引擎中,專門監控,并釋放垃圾的小程序。就相當于,在餐館吃飯,少點的垃圾,就自己收拾了唄。反正我一般都不收拾滑稽原文在博客里面,有興趣的大佬可以去支持一下小白的博客

垃圾制造者的產生,推動了垃圾處理者的出現,所以在我們現在的生活中,人們生產的垃圾都會通過相應的手段去處理掉,而不影響現代人的正常生活。程序來源于生活,所以程序世界也如同現代世界一樣,也要產生垃圾。當然,也需要垃圾回收員來處理生產出來的垃圾.

垃圾

在程序世界中,不再被任何變量使用的對像,或者說不再被繼續使用的變量就是垃圾。

function(){
  var a=0;//聲明變量并賦值
  a++;//對變量進行操作
  //下面都沒有對變量a進行操作,也就是沒有使用變量a,那變量a就變成了垃圾.
  var b=0;
  b++;
}

可以把這個函數當作為一個餐館,變量就相當于客人,坐在餐桌上吃飯的時候,就是在對變量進行操作,在占用著那個餐桌。但是當客人吃完離開后,產生的垃圾還是占用了那個桌子。服務員如果不來收拾,就會一直占用著那個桌子,一直占用著那個內存,也就成了程序中的垃圾。

垃圾回收

javascript中具有自動垃圾回收的機制,js的程序會找出那些不再被繼續使用的變量,自動釋放不再被任何變量使用的垃圾對象的內存空間。

function(){
  //局部變量在函數結束后,便會自動被收回內存
  var a=0;
  a++;
}

還是餐館中,客人吃完飯后產生的垃圾,還是占用了那個桌子,表現在程序中,就還在占用著那塊內存。那此時服務員清理垃圾以供接下來的顧客使用,便是垃圾回收。

垃圾的危害

內存中空間都是有限的,內存占用越多,自然程序運行的越慢,當內存滿了的時候,程序就無法運行,就像餐館,如果沒有服務員,每個顧客用完餐滯留的垃圾無法清理,那餐館可供顧客進餐的餐桌就會越來越少,等到餐桌都被垃圾占滿,那這個餐館也就無法營業了。

垃圾回收器

js引擎中,專門監控,并釋放垃圾的小程序。它有幾個特點

伴隨主程序在后臺并行執行

會記錄每個對象被幾個變量使用著

只要發現一個對象不再被任何變量使用,就釋放該對象所占內存

這些特點也是和現實中餐館的服務員一樣

服務員會在餐館營業時間一直工作(伴隨主程序),他不會打擾每位顧客的進餐(在后臺)。

當有顧客進來餐館的時候,他會記錄顧客的桌位,并且記錄此桌位上顧客的個數

只要發現餐桌上有垃圾并且沒有人在進餐了,他就會過去清理掉這些垃圾

策略

具體到瀏覽器中,垃圾回收有兩個策略,這兩個策略書上解釋的很詳細,網上解釋的也比較多,小白我就不在此詳細解釋了,簡單的說一下就好.

標記清除

當變量進入環境的時候就為變量標記為"進入環境",當變量離開環境的時候,會被標上"離開環境"。

垃圾收集器在運行的時候會給存儲在內存中的所有變量都加上標記。然后,它會去掉環境中的變量以及被環境中的變量引用的標記。而在此之后再被加上標記的變量將被視為準備刪除的變量,原因是環境中的變量已經無法訪問到這些變量了。最后。垃圾收集器完成內存清除工作,銷毀那些帶標記的值,并回收他們所占用的內存空間。

引用計數

另一種不太常見的垃圾回收策略是引用計數。引用計數的含義是跟蹤記錄每個值被引用的次數。當聲明了一個變量并將一個引用類型賦值給該變量時,則這個值的引用次數就是1。相反,如果包含對這個值引用的變量又取得了另外一個值,則這個值的引用次數就減1。當這個引用次數變成0時,則說明沒有辦法再訪問這個值了,因而就可以將其所占的內存空間給收回來。這樣,垃圾收集器下次再運行時,它就會釋放那些引用次數為0的值所占的內存。

當然這個存在一些問題,這個就不過多說了。具體可以翻閱《js高級程序設計(第三版)》的垃圾收集處。

建議

雖然js有主動垃圾回收的機制,但是程序還是需要一定的判斷,而且是有時間間隔的。服務員不可能在你吃飯的時候一直盯著你問你,“你啥時候吃完啊,好了沒?”,所以還是建議,只要一個變量不再使用的時候,要主動為其賦值為null。 就相當于,在餐館吃飯,少點的垃圾,就自己收拾了唄。反正我一般都不收拾 (滑稽)

原文在博客里面,有興趣的大佬可以去支持一下小白的博客

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/91410.html

相關文章

  • 聊聊企業級 Java 應用最重要的4個性能指標

    摘要:筆者多次參與銀行運營商等大型企業的性能優化工作總結了企業級應用最應重視的個性能指標,主要包括商業事務,外部服務,垃圾回收以及應用布局。應用布局最后要探討的性能指標是應用布局。另一個需要監測的是容器性能。 雖然很多人都曾預言 Java 將一蹶不振,但是不可否認的是,很多重要項目中,尤其是銀行和政府一些大型項目,Java 仍在其中扮演著極其重要的角色。筆者多次參與銀行、運營商等大型企業的性...

    sherlock221 評論0 收藏0
  • 紐約蹭飯手冊:怎樣利用Python和自動化腳本在紐約省錢又省心?

    摘要:會解釋怎樣使用邏輯回歸,隨機森林,和自動化腳本,但都不會深入。這使我在紐約地區積累了超過名粉絲,并且仍在快速增長。我收集了個帳戶,這些帳戶發布了許多關于紐約的優質圖片。以下面這兩篇帖子為例這兩個帖子來自同一個紐約的帳戶。 showImg(https://segmentfault.com/img/remote/1460000019393373); 在家做飯不下館子可以減少開支已經是公開的...

    Xufc 評論0 收藏0
  • 【V8引擎】淺析Chrome V8引擎中的垃圾回收機制和內存泄露優化策略

    摘要:一前言的垃圾回收機制使用垃圾回收機制來自動管理內存。垃圾回收器只會針對新生代內存區老生代指針區以及老生代數據區進行垃圾回收。分別對新生代和老生代使用不同的垃圾回收算法來提升垃圾回收的效率。 V8 實現了準確式 GC,GC 算法采用了分代式垃圾回收機制。因此,V8 將內存(堆)分為新生代和老生代兩部分。 一、前言 V8的垃圾回收機制:JavaScript使用垃圾回收機制來自動管理內存。垃...

    qingshanli1988 評論0 收藏0
  • 前端—初級階段5(16-20)

    摘要:一垃圾回收與內存泄漏參考內存控制垃圾回收的垃圾回收策略主要基于分代式垃圾回收機制。內存泄漏內存泄漏的實質就是應當回收的對象因為意外沒有被回收,變成了常駐在老生代中的對象。造成內存泄漏的主要原因有緩存隊列消費不及時作用域未釋放。 內容 1.內存泄漏與垃圾回收2.cookie和session3.單線程原理4.上下左右居中的幾種實現。5.BFC和IFC模型。 一、垃圾回收與內存泄漏 參考:內...

    2i18ns 評論0 收藏0
  • 淺談V8引擎中的垃圾回收機制

    摘要:新生代的對象為存活時間較短的對象,老生代中的對象為存活時間較長或常駐內存的對象。分別對新生代和老生代使用不同的垃圾回收算法來提升垃圾回收的效率。如果指向老生代我們就不必考慮它了。 這篇文章的所有內容均來自 樸靈的《深入淺出Node.js》及A tour of V8:Garbage Collection,后者還有中文翻譯版V8 之旅: 垃圾回收器,我在這里只是做了個記錄和結合 垃圾回收...

    happen 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<