博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#垃圾回收机制
阅读量:6226 次
发布时间:2019-06-21

本文共 1509 字,大约阅读时间需要 5 分钟。

1:垃圾回收机制

CLR托管堆:

(1)第0代--预算容量256k

(2)第1代--预算容量2M

(3)第2代--预算容量10M

注:在不同的程序中,托管堆上的实际内存管理对象的容量可能不会按照预算容量大小开辟

当第0代对象充满的时候,会自动进行垃圾回收,这时第0代中未被释放的对象成为了第1代,而新创建的对象变成第0代,以此类推,当第0代再次充满的时候会继续执行垃圾回收,未被释放的对象会被添加到第1代,随着程序的执行,第1代对象中也会产生垃圾,此时垃圾回收器并不会立即执行回收操作,而是等第1代被充满变成第2代时被回收并整理内存。

 

2:Finalize析构函数被调用的条件:

(1)第0代对象充满

(2)显示调用System.GC的Collect方法

(3)Windows内存不足

(4)应用程序被关闭

(5)CLR被关闭

 

3:释放模式

using System;//要实现释放模式,必须继承IDisposablepublic class MyClass:IDisposable{    private bool disposed = false;    private void Dispose(bool disposeing)    {        if (!this.disposed)        {            if (disposeing)            {                Console.WriteLine("调用引用对象的Dispose方法");            }            Console.WriteLine("释放类本身非托管资源");            disposed = true;            if (disposeing)            {                GC.SuppressFinalize(this);//禁止终结器的调用            }        }    }    //重写IDisposable中的Dispose方法    public void Dispose()    {        Dispose(true);    }    //和上面的方法没区别    public void Close()    {        Dispose(true);    }    ~MyClass()    {        Dispose(false);    }}public class Test{    static void Main()    {        //using这个语法的使用,在实现IDisposable接口时才能使用        using (MyClass mc = new MyClass())        {            Console.WriteLine("调用mc做些事情");        }        //MyClass mc = new MyClass();        //try        //{        //    Console.WriteLine("调用mc做些事情");        //}        //finally        //{        //    mc.Dispose();        //}    }}

 

转载于:https://www.cnblogs.com/ArmyShen/archive/2012/08/27/2657928.html

你可能感兴趣的文章
[codevs3118]高精度除法<高精度>
查看>>
学JS的心路历程-闭包closure
查看>>
本周总结
查看>>
苹果企业账号申请
查看>>
Problem O
查看>>
胜利大逃亡
查看>>
畅通工程(并查集找根节点)
查看>>
【工具使用】sublime text3
查看>>
SQL Server查询优化器的工作原理
查看>>
关于成长的一点碎碎念
查看>>
java生成指定范围的随机数
查看>>
Easy ui Datagrid(下拉、复选、只输入数字、文本) 追加、删除、更改
查看>>
20145209刘一阳 《网络对抗》逆向及BOF基础实践
查看>>
Groovy's dynamic mixin
查看>>
2018.10.27-dtoj-3996-Lesson5!(johnny)
查看>>
LCLFramework框架之数据门户
查看>>
python基础-----集合(在我的世界你是唯一)
查看>>
【转】Closeable, Readable, Flushable, Appendable
查看>>
css
查看>>
Java 语言中 Enum 类型的使用介绍
查看>>