日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

.NET垃圾回收笔记

發(fā)布時間:2023/12/13 asp.net 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 .NET垃圾回收笔记 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

? 名詞

? ? 垃圾收集目標(biāo)

  • ? ? ? ephemeral GC

? ? ? ? 發(fā)生在Gen 0 和Gen 1 的垃圾收集

  • ? ? ? Full GC

? ? ? ? 發(fā)生Gen 2 及以上的Gen與LOH的垃圾收集

? ? 垃圾收集模式

  • ? ? ? 工作站模式

? ? ? ? GC直接發(fā)生在內(nèi)存分配的線程(也是當(dāng)前的工作托管線程)上

  • ? ? ? 服務(wù)器模式

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

? ? 垃圾收集的并發(fā)需求

  • ? ? ? 并發(fā)的意思是background GC在進(jìn)行垃圾收集時,其它托管線程是否可以同時工作(包括分配內(nèi)存)
  • ? ? ? 僅需為Full GC考慮并發(fā),因為ephemeral GC的時間短、代價小,可一直為阻塞模式。
  • ? ? ? .NET4后的并發(fā)可讓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寫析構(gòu)方法,但沒必要。內(nèi)部的“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();}} }

  

?

? 資料

? ??實現(xiàn) Dispose 方法

? ? 垃圾回收通知

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

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

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

轉(zhuǎn)載于:https://www.cnblogs.com/beta2013/p/3377259.html

總結(jié)

以上是生活随笔為你收集整理的.NET垃圾回收笔记的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。