.NET垃圾回收筆記

? 名詞

? ? 垃圾收集目標

  • ? ? ? ephemeral GC

? ? ? ? 發生在Gen 0 和Gen 1 的垃圾收集

  • ? ? ? Full GC

? ? ? ? 發生Gen 2 及以上的Gen與LOH的垃圾收集

? ? 垃圾收集模式

  • ? ? ? 工作站模式

? ? ? ? GC直接發生在內存分配的線程(也是當前的工作托管線程)上

  • ? ? ? 服務器模式

? ? ? ? 每個CPU核都有一個自己獨立的GC線程與托管堆

? ? 垃圾收集的并發需求

  • ? ? ? 并發的意思是background GC在進行垃圾收集時,其它托管線程是否可以同時工作(包括分配內存)
  • ? ? ? 僅需為Full GC考慮并發,因為ephemeral GC的時間短、代價小,可一直為阻塞模式。
  • ? ? ? .NET4后的并發可讓background GC與ephemeral GC同時工作

? 配置

? ??

<configuration><runtime><gcConcurrent enabled="true"/><gcServer enabled="true"/></runtime>
</configuration>

?? 繼承與垃圾回收模型

using System;namespace 繼承與垃圾回收模型 {class Base : IDisposable {private bool _disposed;protected virtual void Dispose(bool disposing) {Console.WriteLine(string.Format("Base.Dispose({0})", disposing));if (!_disposed) {if (disposing) {#region 清理Base自己的托管資源#endregion}#region 清理Base自己的非托管資源#endregion}_disposed = true;}public void Base干活() {if (_disposed) {throw new ObjectDisposedException("Base");}}~Base() {Console.WriteLine("~Base()");Dispose(false);}public void Dispose() {Console.WriteLine("");Dispose(true);GC.SuppressFinalize(this);}}class Child : Base {private bool _disposed;protected override void Dispose(bool disposing) {Console.WriteLine(string.Format("Child.Dispose({0})", disposing));if (!_disposed) {try {if (disposing) {#region 清理Child自己的托管資源#endregion}#region 清理Child自己的非托管資源#endregion_disposed = true;}finally {base.Dispose(disposing);}}}public void Child干活() {if (_disposed) {throw new ObjectDisposedException("爸爸");}}//“可以”為Child寫析構方法,但沒必要。內部的“Dispose(false)”也沒必要~Child() {Console.WriteLine("~Child()");}}class 回收示例 {/// <summary>/// 輸出:/// -----以下為手動回收/// Child.Dispose(True)/// Base.Dispose(True)////// -----以下為自動回收/// ~Child()/// ~Base()/// Child.Dispose(False)/// Base.Dispose(False)/// </summary>/// <param name="args"></param>static void Main(string[] args) {Console.WriteLine("-----以下為手動回收");var 手動 = new Child();手動.Dispose();Console.WriteLine("/n/n-----以下為自動回收");var 自動 = new Child();GC.Collect();}}
}

  

?

? 資料

? ??實現 Dispose 方法

? ? 垃圾回收通知

? ??.Net Discovery 系列之七--深入理解.Net垃圾收集機制(拾貝篇) 發布在新年第一秒

? ??.Net Discovery 系列之四--深入理解.Net垃圾收集機制(下)

? ? So, what’s new in the CLR 4.0 GC?? ? ??
? ? .NET 4/4.5里新的垃圾收集機制? ? ??
? ? 對象代(Generation)與GC? ? ??
? ? Using GC Efficiently – Part 2? ? ??
? ? CLR探索系列:Server and Workstation Garbage Collection探索(垃圾回收系列)
? ? ??

轉載于:https://www.cnblogs.com/beta2013/p/3377259.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/259424.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/259424.shtml
英文地址,請注明出處:http://en.pswp.cn/news/259424.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

go.js中的圖標(icons)的使用

2019獨角獸企業重金招聘Python工程師標準>>> 1、圖標庫下載&#xff1a; 將icons引入&#xff1a;http://gojs.net/latest/samples/icons.js 2、樣式演示 地址&#xff1a;http://gojs.net/latest/samples/icons.html 轉載于:https://my.oschina.net/u/2391658/blog…

Pygame - Python游戲編程入門(1)

前言 在上一篇中&#xff0c;我們初步熟悉了pygame的控制流程&#xff0c;但這對于一個游戲而言是遠遠不夠的。所以在這一篇中&#xff0c;我們的任務是添加一架飛機&#xff08;玩家&#xff09;&#xff0c;并且能夠控制它進行移動&#xff0c;這樣我們就又離目標進了一步了~…

C++字符輸入getchar()和字符輸出putchar()

轉載&#xff1a;http://c.biancheng.net/cpp/biancheng/view/117.html C還保留了C語言中用于輸入和輸出單個字符的函數&#xff0c;使用很方便。其中最常用的有getchar函數和putchar函數。 putchar函數(字符輸出函數) putchar函數的作用是向終端輸出一個字符。例如&#xf…

linux實現shell,linux

4.5Mhttp://www.starbase-929.net/media/Calibre%20Library/Ken%20O.%20Bartch/Linux%20Shell%20Scription%20With%20Bash%20(1778)/Linux%20Shell%20Scription%20With%20Bash%20-%20Ken%20O.%20Bartch.pdfstarbase-929.net全網免費4.0Mhttp://www.myaitcampus.net/elibrary/im…

AQS淺析

2019獨角獸企業重金招聘Python工程師標準>>> AQS的原理淺析 本文是《Java特種兵》的樣章&#xff0c;本書即將由工業出版社出版 AQS的全稱為&#xff08;AbstractQueuedSynchronizer&#xff09;&#xff0c;這個類也是在java.util.concurrent.locks下面。這個類似乎…

str045漏洞提權linux,Linux運維知識之CVE-2016-5195 Dirtycow: Linux內核提權漏洞

本文主要向大家介Linux運維知識之CVE-2016-5195 Dirtycow&#xff1a; Linux內核提權漏洞紹了&#xff0c;通過具體的內容向大家展現&#xff0c;希望對大家學習Linux運維知識有所幫助。CVE-2016-5195 Dirtycow&#xff1a; Linux內核提權漏洞以下都是github上找的源碼&#xf…

編程如寫作

昨晚似乎是個適合寫作的夜&#xff0c;不論是自己還是朋友&#xff0c;都比平常更容易被觸動。看著微博上朋友們的心路&#xff0c;想寫點什么卻似乎找不出非常值得大書特書的主題&#xff0c;只是歪坐在電腦旁&#xff0c;喝著咖啡&#xff0c;單曲循環著倉木麻衣的《time aft…

C++中cin、cin.get()、cin.getline()、getline()等函數的用法

轉載&#xff1a;http://www.cnblogs.com/flatfoosie/archive/2010/12/22/1914055.html c輸入流函數主要以下幾個&#xff1a; 1、cin 2、cin.get() 3、cin.getline() 4、getline() 附:cin.ignore();cin.get()//跳過一個字符,例如不想要的回車,空格等字符 1、cin>>…

工作環境總結(1)開發環境搭建

1、安裝git 安裝文件&#xff1a;Git-2.12.0-64-bit.exe 下載地址&#xff1a;https://github.com/git-for-windows/git/releases/download/v2.12.0.windows.1/Git-2.12.0-64-bit.exe 在git bash中配置&#xff0c;git bash命令行中執行&#xff08;只有使用到egit時使用&…

c語言煙花百度云,C語言實現放煙花的程序

這是一個利用C語言編寫放煙花的程序(同時也可以播放音樂)&#xff0c;供大家參考&#xff0c;具體內容如下代碼如下#pragma once#include#include //圖形界面庫頭文件#include //計算圓形的軌跡坐標#include#include#include#include#pragma comment(lib,"winmm.lib"…

決定人生的七條公式

1 .積跬步以致千里&#xff0c;積怠惰以致深淵 1.01^365 37.80.99^365 0.032.拖延癥 U EV/ID U完成任務的程度 E對成功的信心 V 對任務的愉悅度 I 你的分心程度 D你多久會獲得回報3.三天打魚兩天曬網&#xff0c;終將一無所獲 1.01^3 x 0.99^2 < 1.01 4.愛因斯坦的成…

strncpy與strcpy的區別與注意事項

strncpy 是 C語言的庫函數之一&#xff0c;來自 C語言標準庫&#xff0c;定義于 string.h&#xff0c;char *strncpy(char *dest, char *src, int n)&#xff0c;把src所指字符串的前n個字節復制到dest所指的數組中&#xff0c;并返回指向dest的指針。 strcpy只是復制字符串&am…

使用ssh公鑰實現免密碼登錄

ssh 無密碼登錄要使用公鑰與私鑰。linux下可以用用ssh-keygen生成公鑰/私鑰對&#xff0c;下面我以CentOS為例。 有機器A(192.168.1.155)&#xff0c;B(192.168.1.181)。現想A通過ssh免密碼登錄到B。 首先以root賬戶登陸為例。 1.在A機下生成公鑰/私鑰對。 [rootA ~]# ssh-keyg…

15款的視頻處理軟件免費下載

因為需要購買昂貴的視頻處理軟件和高性能圖形計算機&#xff0c;所以視頻處理是一項比較耗費金錢的技術活。正是由于這樣&#xff0c;一部分人選擇使用性能較好的免費在線編輯軟件&#xff0c;無需太多視頻處理知識便可在瀏覽器中剪切和編輯視頻。然而&#xff0c;當我們無法連…

液位系統c語言程序,超聲波自動測量物體液位系統的設計

超聲波自動測量物體液位系統的設計(任務書,畢業論文15000字)摘要本系統以STC89C52單片機為核心&#xff0c;通過硬件電路連接和軟件程序的編寫實現通用型超聲波自動測量物體液位系統的設計。其主要原理是由單片機控制超聲波發射電路發射超聲波&#xff0c;超聲波接收電路接收遇…

android-sdk-windows版本號下載

Android SDK 4.0.3 開發環境配置及執行 近期又裝了一次最新版本號的ADK環境 眼下最新版是Android SDK 4.0.3 本文的插圖和文本盡管是Android2.2的 步驟都是一樣的&#xff0c;假設安裝的過程中遇到什么問題&#xff0c;能夠留言&#xff0c;我會盡快回復&#xff01; 系統環境的…

string中c_str()、data()、copy(p,n)函數的用法

轉載&#xff1a;http://www.cnblogs.com/qlwy/archive/2012/03/25/2416937.html 標準庫的string類提供了3個成員函數來從一個string得到c類型的字符數組&#xff1a;c_str()、data()、copy(p,n)。 1. c_str()&#xff1a;生成一個const char*指針&#xff0c;指向以空字符終止…

POJ2402 Palindrome Numbers 回文數

題目鏈接: http://poj.org/problem?id2402 題目大意就是讓你找到第n個回文數是什么. 第一個思路當然是一個一個地構造回文數直到找到第n個回文數為止(也許大部分人一開始都是這樣的思路). 很明顯找到第n個之前的所有操作都是浪費, 這也是這個方法的最大弱點. 抱著僥幸心理(誰知…

離散卷積的c語言編程實驗,數字信號處理實驗一離散卷積c語言編程.ppt

數字信號處理實驗一離散卷積c語言編程實驗一 離散卷積的C語言編程實驗 DSP實驗室 2005 實驗性質 綜合設計性實驗 實驗目的 1 了解和認識常用的各種信號&#xff1b; 2 掌握卷積的定義和計算方法&#xff1b; 3 掌握在計算機中生成以及繪制信號序列圖的方法。 實驗原理 離散時間…

async-await原理解析

在用async包裹的方法體中&#xff0c;可以使用await關鍵字以同步的方式編寫異步調用的代碼。那么它的內部實現原理是什么樣的呢&#xff1f;我們是否可以自定義await以實現定制性的需求呢&#xff1f;先來看一個簡單的例子&#xff1a; 1 class Test {2 public sta…