为何要写

之所以写这篇文章,完全是因为学生们在实际开发中遇到的问题,一个对象占用的内存空间总不被释放,导致系统内存不断攀升,其最主要原因是我们对“对象的生与死”不清楚,或者从来没有认真去考虑过这件事,确实一个对象在被声音,初始化,使用或者最后被系统回收,整个的过程与我们关系确实不大,我们开发人员直接用就行了,对于C#这种托管语言你没必要去自己回收它,但有时,我们多了解一点系统的回收机制,对我们的程序还是很有好处的。

对象的种类(根据作用域)

1 类对象,静态对象,使用static修饰符进行声明,作用域为整个类(所有实体公有),当你的程序运行期间它一直不会被回收,直到你的进程结束(所以使用它要注册,大数据一般不用类对象存储)

2 类级别的实例对象,它定义在类里,方法体外面,作用域为整个类的当前实例,它的回收时机我们无法确定,当然你可以手动进行  GC.Collect()来马上释放它,否则由系统的垃圾回收机制管理它

3 方法级别的实例对象,局部对象,它定义在方法内部,作用域为当前方法体,方法执行完成后,自动释放

代码中的实验

    public class Product
{
~Product()
{
Logger.LoggerFactory.Instance.Logger_Info("Product对象已经被释放");
}
public int ID { get; set; }
public string Name { get; set; }
} public class ProductConfig
{
~ProductConfig()
{
Logger.LoggerFactory.Instance.Logger_Info("ProductConfig对象已经被释放");
}
public int ID { get; set; }
public string Name { get; set; }
}
        /// <summary>
/// 类级别的
/// </summary>
ProductConfig productConfig = new ProductConfig();
public ActionResult Create()
{
/// <summary>
/// 实例成员,方法体里
/// </summary>
Product product = new Product();
GC.Collect();//清除全局实例成员,否则全局实例对象将不会马上清楚,它会等待垃圾回收
return View();
}

上面代码在执行后,会写入日志文件,由于在方法里使用了GC.Collect()方法,这时全局实例对象ProductConfig将会在方法执行后被释放,如果不加这个方法,那么ProductConfig何时释放,我们是不知道的。

aaarticlea/png;base64,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" alt="" />

Dispose模式

对上面的操作是我们刻意去进行的,意思就是让大家看到,对象何时会被释放,而对象在被释放后,会执行类的析构方法(~开头的),它在C#里很少被使用,或者我们很少关注它,因为你不去实现它,系统垃圾回收结束后也会去调用它,这是对于托管资源说的,我们在C#这个开发语言里,有时也会涉及到使用一些“非托管”资源,比如数据库连接,网络通讯,文件访问等等,它们是不受当前Frameworks CLR控制的,或者说CLR也控制不了它,因为它已经脱离了当前应用程序,这也算是合情合理,这时,这些非托管资源会实现自己的“资源释放”方法,好Dispose,大家如果有心的话,都会发现像文件,SQL连接,socket,Tcp等对象,都有Dispose方法,它的意思就是释放当前对象,而我们在使用它们时,如何把非托管与托管对象结合起来,一起把对象释放呢,这就是现在要说的Dispose模式

   /// <summary>
/// 实现IDisposable,对非托管系统进行资源回收
/// 作者:仓储大叔
/// </summary>
public abstract class DisposableBase : IDisposable
{
/// <summary>
/// 标准Dispose,外界可以直接调用它
/// </summary>
public void Dispose()
{
Logger.LoggerFactory.Instance.Logger_Debug("Dispose"); this.Dispose(true);////释放托管资源
GC.SuppressFinalize(this);//请求系统不要调用指定对象的终结器. //该方法在对象头中设置一个位,系统在调用终结器时将检查这个位
} private void Dispose(bool disposing)
{
if (!_isDisposed)//_isDisposed为false表示没有进行手动dispose
{
//清理托管资源和清理非托管资源
Finalize(disposing);
}
Logger.LoggerFactory.Instance.Logger_Debug("Dispose complete!");
_isDisposed = true;
} /// <summary>
/// 由子类自己去实现自己的Dispose逻辑(清理托管和非托管资源)
/// </summary>
/// <param name="disposing"></param>
protected abstract void Finalize(bool disposing); private bool _isDisposed; /// <summary>
/// 是否完成了资源的释放
/// </summary>
public bool IsDisposed
{
get { return this._isDisposed; }
}
/// <summary>
/// 析构方法-在类被释放前被执行
/// </summary>
~DisposableBase()
{
Logger.LoggerFactory.Instance.Logger_Debug("析构方法"); //执行到这里,托管资源已经被释放
this.Dispose(false);//释放非托管资源,托管资源由终极器自己完成了
}
}

使用它

  public class ZzlTools : DisposableBase
{ protected override void Finalize(bool disposing)
{
if (!disposing)
{
//清除托管
}
//清理非托管
}
}

通过大叔整理的Dispose基类,我们可以看到,外界的对象只要实现Finalize方法即可,把自己需要释放的对象写在Finalize里就行了,简单!

最后,和大家分享我的一个经验,学习基础知识,就像修炼内功,我们一定要打好根基,才能更上一层楼!

C# 基础才是重中之重~对象的生与死的更多相关文章

  1. WPF MVVM UI分离之《交互与数据分离》 基础才是重中之重~delegate里的Invoke和BeginInvoke 将不确定变为确定系列~目录(“机器最能证明一切”) 爱上MVC3系列~全局异常处理与异常日志 基础才是重中之重~lock和monitor的区别 将不确定变成确定~我想监视我的对象,如果是某个值,就叫另一些方法自动运行 将不确定变成确定~LINQ DBML模型可以对

    WPF MVVM UI分离之<交互与数据分离>   在我们使用WPF过程中,不可避免并且超级喜欢使用MVVM框架. 那么,使用MVVM的出发点是视觉与业务逻辑分离,即UI与数据分离 诸如下 ...

  2. 基础才是重中之重~关于ThreadStatic和Quartz的一点渊源

    回到目录 ThreadStatic ThreadStatic是C#里的一个特性,它可以让你的字段在一个线程里有效,但你不能控制这个字段在何时被回收,即如果声明一个int32的字段为ThreadStat ...

  3. 基础才是重中之重~ConcurrentDictionary让你的多线程代码更优美

    回到目录 ConcurrentDictionary是.net4.0推出的一套线程安全集合里的其中一个,和它一起被发行的还有ConcurrentStack,ConcurrentQueue等类型,它们的单 ...

  4. 基础才是重中之重~理解linq中的groupby

    linq将大部分SQL语句进行了封装,这使得它们更加面向对象了,对于开发者来说,这是一件好事,下面我从基础层面来说一下GroupBy在LINQ中的使用. 对GroupBy的多字段分组,可以看我的这篇文 ...

  5. 基础才是重中之重~lock和monitor的区别

    回到目录 Monitor的介绍 1.Monitor.Enter(object)方法是获取锁,Monitor.Exit(object)方法是释放锁,这就是Monitor最常用的两个方法,当然在使用过程中 ...

  6. 基础才是重中之重~Emit动态构建方法(参数和返回值)

    回到目录 对于Emit我们知道它的可以动态构建程序集,类型,方法,属性等,或者说只要手动使用C#创建的东西使用Emit也都可以动态创建它们,Emit由于它的特别之处,所以在很多领域得到了广泛的应用,像 ...

  7. 基础才是重中之重~方法override详解

    回到 目录 之所以写这篇文章,完全是因为这次代码审核,这次代码审核过程当中,出现了很多我认为基础知识不够扎实的问题,所以,打算把它们记录下来,共大家分享. 方法的override,即方法的覆写或者重写 ...

  8. 基础才是重中之重~LazyInitializer.EnsureInitialized对属性实现化的性能优化

    回到目录 LazyInitializer.EnsureInitialized是frameworks4.0引入的新东西,实现对属性延时初始化的功能,它作用在System.Threading命名空间下,所 ...

  9. 基础才是重中之重~C#中标准的IDispose模式

    回到目录 IDispose模式在C++中用的很多,用来清理资源,而在C#里,资源分为托管和非托管两种,托管资源是由C#的CLR帮助我们清理的,它是通过调用对象的析构函数完成的对象释放工作,而对于非托管 ...

随机推荐

  1. Django之深入了解ORM

    目录 Django ORM操作 常用字段 常用字段参数 自定义字段 单表操作 双下划线查询 模糊查询 多表操作 一对多字段数据的操作 多对多字段数据的操作 跨表查询 基于对象的跨表查询 基于双下划线的 ...

  2. python事件调度库sched

    事件调度 sched模块内容很简单,只定义了一个类.它用来最为一个通用的事件调度模块. class sched.scheduler(timefunc, delayfunc)这个类定义了调度事件的通用接 ...

  3. Joomla - 后台系统(功能简介)

    Joomla - 后台系统简介 全局配置

  4. 一个事件一定时间内只允许点击执行一次 与 vue阻止滚动穿透

    可能我的方法很笨,简单实现来的就是给两个状态,一个状态点击时就发生改变,另外一个给一个定时器延迟改变 篮圈部分,给了两种状态,一个isDisable,一个comeTime 点击事件以后comeTime ...

  5. Thrift(PHP)入门无错篇章(一)

    一.安装篇 博主注:截至2017-10-10,官网上thrift最新版0.10.0一直无法成功编译.所以,请选择0.9.3版本,避免走各种弯路: wget http://apache.fayea.co ...

  6. 表单修饰符.lazy.number.trim

    <!DOCTYPE html> <html lang="zh"> <head> <title></title> < ...

  7. PAT甲级——A1073 Scientific Notation

    Scientific notation is the way that scientists easily handle very large numbers or very small number ...

  8. Compile_Netgen_WITH_OpenCascade

    title: Compile_Netgen_WITH_OpenCascade date: 2016-04-23 21:14:42 tags: 结合OCCT编译Netgen date: 2016-04- ...

  9. 2018-10-31-C#-7.0-使用下划线忽略使用的变量

    title author date CreateTime categories C# 7.0 使用下划线忽略使用的变量 lindexi 2018-10-31 14:4:9 +0800 2018-10- ...

  10. 全栈之路-微信小程序-架构总览

    第一阶段是用来学习小程序开发的,这个就相当于PC端的网站吧,只不过现在依靠微信强大的流量来将业务搬移到小程序中,对于企业来说,这是一种很好的发展方向,既减少了开发成本,又减少了推广成本,小程序是很被人 ...