.Net Core 中GC的工作原理

前言

.NET 中GC管理你服務的內存分配和釋放,GC是運行公共語言運行時(CLR Common Language Runtime)中,GC可以幫助開發人員有效的分配內存和和釋放內存,大多數情況下是不需要去擔心的,但是有時候服務總是是出現莫名的問題,所以還是有必要了解一下GC的基礎知識的。這裏就不介紹內存方面的知識了。

GC回收過程

GC將對象分為大對象和小對象,如果對象的大小大於或者等於85000byte將被視為大對象,大對象會被分配到到(LOH) Large Object Heap中去。

GC有一個代數的概念Generation,分為三代

  • Generation 0: 0代,這裏面都是生命周期很短的對象,比如臨時變量,當你new一個對象的時候該對象都會在Generation 0中,這裏的對象將很快的被GC回收,但是當你new的是一個大對象的時候它會直接進去大對象堆(LOH)

  • Generation 1: 1代,這一代包含的也基本是生命周期很短的對象。它是短期對象和長期對象之間的緩衝區。

  • Generation 2: 2代,這一代包含的都是生命周期長的對象,它們都是從1代和2代中選拔出來的,LOH屬於2代。

當分配的對象使用的內存超出了GC的閾值時回收就會開始。閾值是隨着服務的運行GC自己調整的。或者直接調用GC.Collect方法也可以開始回收。

回收開始時GC會開始循環遍歷Generation 0中的所有對象並標記所有對象是活動對象還是非活動對象,標記完成後會更新活動對象的引用。最後會回收非活動對象佔用的內存,並把活動對象壓縮后移動到Generation 1中,Generation 1中的或對象在移動到Generation 2是默認不會被壓縮的,因為複製大的對象會導致性能的下降。可以通過GCSettings.LargeObjectHeapCompactionMode來配置壓縮LOH

GC的回收類型

GC 回收有兩種類型,WorkStation GC(工作站)和Server GC(服務器),.Net Core服務默認情況下時使用WorkStation GC工作站模式來回收。

  • Server GC會擁有更大的內存,Server GC會為每個處理器創建一個用於執行垃圾回收的堆和專用線程,每個堆都擁有一個小對象堆和大對象堆,並且所有的堆都可以訪問。 不同堆上的對象可以相互引用。因為多個垃圾回收線程一起工作,所以對於相同大小的堆Server GC垃圾回收比WorkStation GC垃圾回收更快一些。但是Server GC回收會佔用大量資源,這種模式的特點是初始分配的內存較大,並且盡可能不回收內存,進行回收用時會很耗時,並進行內存碎片整理工作。

  • Workstation GC的內存相對於Server GC就很小啦,且它的回收線程就是服務的線程且有較高的優先級,因為必須與其他線程競爭 CPU 時間來進行回收。

不同模式下的內存分配

GC的回收模式

GC有三種回收模式

  • Non-Concurrent GC 非并行回收模式:在非并行模式下,回收時候會掛起所有其他的線程影響服務的性能。

  • Concurrent GC 并行回收模式: 并行會後可以解決非并行回收引起的線程掛起,讓其他線程和回收線程一起運行,使服務可以更快的響應,并行回收只會發生在Generation 2中,Generation 0/1始終都是非併發的,因為他們都是小對象回收的速度很快。在并行回收的時候我們依舊可以分配對象到Generation 0/1中。

  • Background GC 後台回收模式:Background GCConcurrent GC的增強版本。 區別在Background GC回收Generation 2的時允許了Generation 0/1 進行清理。在WorkStation GC下會使用一個專用的後台垃圾回收線程,而Server GC下會使用多個線程來進行回收。且Server GC下回收線程不會超時。

非并行回收:

并行回收

WorkStation GC 後台回收

Server GC 後台回收

GC回收類型配置

推薦使用runtimeconfig.json文件和環境變量COMPlus_gcServer來配置。

COMPlus_gcServer 0 = WorkStation GC
COMPlus_gcServer 1 = Server GC

{
   "runtimeOptions": {
      "configProperties": {
         "System.GC.Server": true 
         //true - Server GC  false - WorkStation GC
      }
   }
}

GC回收模式配置

推薦使用runtimeconfig.json文件和環境變量COMPlus_gcConcurrent來配置。

COMPlus_gcConcurrent 0 =Non-Concurrent GC
COMPlus_gcConcurrent 1 =Background GC

{
   "runtimeOptions": {
      "configProperties": {
         "System.GC.Concurrent": true 
         //true- Background GC false -Non-Concurrent GC
      }
   }
}

強制回收

在一些特殊的情況下強制回收是可以提高服務的性能的,可以向GC.Collect()提供GCCollectionMode枚舉值觸發強制回收。

  • Default :默認的回收設置。
  • Forced :立即強制進行垃圾回收。
  • Optimized : GC來判斷時間是否是回收對象的最佳時間,如GC判定回收效率不高因此回收不合理的情況下將返回不回收對象。
 GC.Collect( (int) GCCollectionMode.Forced);

延遲回收

在我們的服務在檢索數據或者處理邏輯的時候可能會發生垃圾回收,從而妨礙性能,可以通過System.Runtime.GCLatencyMode來配置延遲回收

  • GCLatencyMode.LowLatency:禁止Generation 2回收,只回收Generation 0/1,這個只能在短時間內使用,如果長時間使用內存處於壓力下GC還是會觸發回收,這個配置只對WorkStation GC可用。

  • GCLatencyMode.SustainedLowLatency :禁止Generation 2 Foreground GC (前台回收),只回收Generation 0/1Generation 2後台回收。WorkStation GCServer GC都可以使用,且可以長時間使用,但是如果禁用Background GC,將無法使用。

GC.Collect( (int) GCLatencyMode.SustainedLowLatency);

參考文章

從ASP.NET Core 3.0 preview 特性,了解CLR的Garbage Collection

微軟文檔

總結

參考了一些大佬和官方的文檔簡單的去了解了一下GC的工作原理,方便在開發中有效區分配使用內存資源,文中如有錯誤大佬們可以在評論區指出。

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※超省錢租車方案

※別再煩惱如何寫文案,掌握八大原則!

※回頭車貨運收費標準

※教你寫出一流的銷售文案?

要求遏阻氣候變遷 瑞士首都10萬人上街遊行

摘錄自2019年9月29日中央社報導

瑞士即將在3週後舉行國會大選,主辦單位指出,約10萬人29日在瑞士首都伯恩(Bern)上街遊行,呼籲採取行動遏阻氣候變遷。

遊行由80個競選團體主辦,它們自稱是「氣候聯盟」(Climate Alliance)。伯恩警方未針對主辦單位估計的共襄盛舉人數發表評論,但警方發言人賈吉(Dominik Jaggi)告訴法新社,「這是伯恩近年來最大規模示威抗議之一」。

Bern, Switzerland
60,000 people

— 350.org Europe (@350Europe)

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※帶您來了解什麼是 USB CONNECTOR  ?

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

※如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!

※綠能、環保無空污,成為電動車最新代名詞,目前市場使用率逐漸普及化

※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

※教你寫出一流的銷售文案?

住友化學將收購Nufarm南美農藥業務

摘錄自2019年9月30日日經中文網、大紀元、中國時報報導

日本的住友化學將開拓全球最大的農藥市場南美。住友化學將以11.9億澳元(約8.048億美元、800億日元)收購澳大利亞的農藥巨頭Nufarm的南美業務,銷售大豆的除草劑和農藥。住友化學完成收購後,南美的農藥業務將超過北美,成為該公司最大的農藥業務。

南美是世界上最大的農用化學品市場,隨著美中貿易展的激烈進行,南美的大豆和其它商品日益替代美國農產品,向中國出口。這是住友化學公司針對美中貿易戰影響作出的決定。

另外,澳洲旱災已威脅東澳地區作物生產,也打擊澳洲農業化學業者的獲利,Nufarm在美國的數座廠房也因洪水受創,Nufarm盼藉此籌資償債。

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

網頁設計公司推薦不同的風格,搶佔消費者視覺第一線

※想知道購買電動車哪裡補助最多?台中電動車補助資訊懶人包彙整

南投搬家公司費用,距離,噸數怎麼算?達人教你簡易估價知識!

※教你寫出一流的銷售文案?

※超省錢租車方案

環保新招! 羅馬推回收塑膠瓶換免費車票

摘錄自2019年10月1日自由時報報導

義大利首都羅馬在三個車站裝設塑膠瓶回收機,讓乘客投入空瓶換取免費的地鐵票,以加強環保行動。

《路透》報導,羅馬垃圾回收率低且效率不佳,因此這項在7月啟動的回收計畫廣受歡迎,目前已回收了35萬個塑膠瓶。羅馬市公共交通公司(ATAC)表示,該計畫很快就會擴展到整個地鐵網路,並實施到2020年7月。

ATAC發言人表示,有些回收狂熱者不到20天內就收集了3500個塑膠瓶,價值175張車票。羅馬市民佩雷利(Claudio Perelli)說,「如果你花錢讓民眾參與(回收)活動,就算是沒有公民意識的人也會開始回收」。

參與計畫的乘客必須在手機上下載APP,應用程式會根據投入回收機的瓶子數量兌換所賺取的車票數量,一張效期100分鐘的車票「價格」為30個塑膠瓶。乘客無須再買紙本車票,直接使用APP上兌換到的電子車票刷卡進站。

報導指出,羅馬是歐盟第一個在地鐵再啟動該回收計畫的首都。北京和伊斯坦堡已採用類似的計畫。

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

網頁設計公司推薦不同的風格,搶佔消費者視覺第一線

※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

南投搬家公司費用需注意的眉眉角角,別等搬了再說!

新北清潔公司,居家、辦公、裝潢細清專業服務

※教你寫出一流的銷售文案?

印尼科摩多島不封島了 明年起改收觀光客3萬「會員費」

摘錄自2019年10月1日聯合報報導

印尼科摩多(Komodo)島原定明年(2020)起封島,不再對觀光客開放,不過印尼政府已推翻7月的決定,表示明年1月起將重新開放該島,但登島觀光客必須繳交1000美元(約台幣3萬1000元)的「會員費」,是現行門票的100倍。

科摩多島以生態豐富聞名於世,其中最著名的是科摩多龍(Komodo Dragon),是世界上最大的蜥蜴,平均體長2至3公尺,重約70公斤。

目前遊客赴科摩多島的觀光費用是十美元(約台幣310元),去年(2018)約有17萬6000人次造訪該島。印尼政府表示,新制包含兩種會員等級,特級(Premium)會員才能遊覽科摩多島,有效期間為一年;非特級會員僅能參觀同屬「科摩多國家公園」的其他小島,會員費收入將用於島上的生態保育。

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

新北清潔公司,居家、辦公、裝潢細清專業服務

※別再煩惱如何寫文案,掌握八大原則!

※教你寫出一流的銷售文案?

※超省錢租車方案

燃煤為王!東南亞到2030年前 仍以燃煤發電為主

摘錄自2019年10月1日聯合報報導

近期幾份報告顯示,儘管全球邁向潔淨能源,但快速成長的東南亞經濟體仍以燃煤為能源主流。

根據國際能源署(IEA)數據,全球燃煤需求連續八年成長,去年達到0.7%,並預期到2023年東南亞的燃煤消耗將穩定強勁成長,抵銷歐洲及北美的下滑。IEA指出,亞洲多數地區燃煤需求增加,是因為它易於取得,且成本低廉。

Wood Mackenzie研究發現,燃煤不僅將持續成為東南亞主要電力來源,用量將在2027年觸頂後才會下滑。而到2040年,燃煤仍將占東南亞發電占比的36%。陶‧賈桂琳說,燃煤需求激增,主要受越南及印尼需求帶動。

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

新北清潔公司,居家、辦公、裝潢細清專業服務

※別再煩惱如何寫文案,掌握八大原則!

網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

※超省錢租車方案

※教你寫出一流的銷售文案?

東帝汶爆發非洲豬瘟 亞洲十國成疫區

摘錄自2019年9月28日聯合報報導

繼菲律賓及南韓之後,位於東南亞地區的東帝汶民主共和國也已經向世界動物衛生組織(OIE)通報發生非洲豬瘟疫情,亞洲地區總計已有十個國家成為非洲豬瘟疫區。

從去年中國大陸爆發非洲豬瘟疫情之後,亞洲地區國家相繼淪陷,農委會主委陳吉仲今天(28日)透過臉書貼文指出,位於東南亞的東帝汶民主共和國已經向世界動物衛生組織通報爆發非洲豬瘟,首次就通報了100例,顯見疫情已經非常嚴重。

陳吉仲表示,東帝汶約有4萬中國人活動,初步判斷是病毒引入的來源,雖然東帝汶與台灣並沒有直航班機,但台灣為超前部署防疫,已經在9月5日時規定東南亞全境所有直航班機都比照疫區標準,旅客行李必須100%檢疫。

根據防檢局官網,目前包含中國、蒙古、越南、柬埔寨、北韓、寮國、緬甸、菲律賓、南韓及東帝汶都有非洲豬瘟疫情,亞洲國家數量已達十個。

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※教你寫出一流的銷售文案?

※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

※回頭車貨運收費標準

※別再煩惱如何寫文案,掌握八大原則!

※超省錢租車方案

一條鯨魚抵幾千棵樹 緩解暖化天然神器 「護鯨就是固碳」

環境資訊中心綜合外電;姜唯 編譯;林大利 審校

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※超省錢租車方案

※別再煩惱如何寫文案,掌握八大原則!

※回頭車貨運收費標準

※教你寫出一流的銷售文案?

特斯拉分享技術專利 或與BMW聯手快速充電站

為鼓勵其他對手投入電動車研發,美國電動車巨頭特斯拉(Tesla)上周四宣布,將該公司握有的核心技術專利完全開放,執行長穆斯克(Elon Musk)並暗示,全球豪華車龍頭BMW對特斯拉若干專利技術表示興趣。

穆斯克在公司官網貼文表明,將專利組合毫無保留開放給有意跨足電動車開發的後進業者,條件是它們得承諾不會為了智慧財產權之爭鬧上法庭。

據特斯拉遞交主管機關的文件,迄至今年初,特斯拉已發表203項有關電池及電動車和燃油車區分特徵的專利,另有280項專利申請案尚待審理批准。

另外,穆斯克还透露與德國豪華車廠BMW的主管會面時,討論到共享電池快速充電技術的話題,暗示2家業者大有機會合作開發快速充電站。 

本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※帶您來了解什麼是 USB CONNECTOR  ?

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

※如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!

※綠能、環保無空污,成為電動車最新代名詞,目前市場使用率逐漸普及化

※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

※教你寫出一流的銷售文案?

量產版豐田Toyota FCV氫燃料電池車 2015年上市

於2013年東京車展亮相的豐田Toyota全新FCV Concept氫燃料電池(Fuel Cell Vehicle)概念車,甫推出就受到極大關注。Toyota終於在25日正式公開量產版FCV氫燃料電池車,預計將於2015年四月前在日本上市、同年夏天在美國和歐洲市場推出,售價約為七百萬日圓(約新台幣兩百萬元)。

Toyota的量產版FCV氫燃料汽車預計於2015年四月起,先後於日本、美國、歐洲等市場推出,預計售價為七百萬日圓。(照片來源:Toyota)

Toyota投入燃料電池車研發已行之有年。該公司選用的氫氣可由太陽能、風力等方法生產,壓縮後容易儲存與運輸,能量密度也比一般電池更高,對燃料電池車而言是相當理想的替代能源。Toyota的燃料電池車技術成熟,新的量產版FCV氫燃料電池車之性能可比傳統汽油車,且補充氫燃料只需三分鐘,在充滿氫燃料的狀況下,最大行駛距離可達七百公里;行駛時只會排放出水蒸氣,對環境的影響遠低於汽油車。

Toyota量產版氫燃料電池車的外型與概念車類似,皆以科技感與未來感為設計主軸。車燈採用LED燈組,整體車身造型充滿流線動感。Toyota歐洲執行副總裁Karl Schlicht對FCV氫燃料電池車正式問世信心滿滿,他表示:「燃料電池車還會面臨許多挑戰,包括相關基礎設施與消費者接受度等。但我們有信心,氫燃料電池車會越來越受歡迎。」

除了燃料電池車外,Toyota也表示將投入開發燃料電池巴士以及家用電池燃料等領域,日本政府也將針對燃料電池車提供購車補貼與減稅等優惠措施。

Toyota 新亮相的量產版FCV氫燃料電池車,流線型的車身充滿科技感與未來感。(照片來源:Toyota)

本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

網頁設計公司推薦不同的風格,搶佔消費者視覺第一線

※想知道購買電動車哪裡補助最多?台中電動車補助資訊懶人包彙整

南投搬家公司費用,距離,噸數怎麼算?達人教你簡易估價知識!

※教你寫出一流的銷售文案?

※超省錢租車方案