为何要写

之所以写这篇文章,完全是因为学生们在实际开发中遇到的问题,一个对象占用的内存空间总不被释放,导致系统内存不断攀升,其最主要原因是我们对“对象的生与死”不清楚,或者从来没有认真去考虑过这件事,确实一个对象在被声音,初始化,使用或者最后被系统回收,整个的过程与我们关系确实不大,我们开发人员直接用就行了,对于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. 洛谷P2325 [SCOI2005]王室联邦

    P2325 [SCOI2005]王室联邦 题目描述 "余"人国的国王想重新编制他的国家.他想把他的国家划分成若干个省,每个省都由他们王室联邦的一个成员来管理. 他的国家有n个城市, ...

  2. input光标使用caret-color改变颜色

    本文转载自:https://www.zhangxinxu.com/wordpress/2018/01/css-caret-color-first-line/ CSS caret-color属性可以改变 ...

  3. leetcode-80-删除排序数组中的重复项②

    题目描述: 第一次提交: class Solution: def removeDuplicates(self, nums: List[int]) -> int: nums.reverse() f ...

  4. CentOS7使用firewalld打开关闭防火墙与端口(转)

    CentOS7使用firewalld打开关闭防火墙与端口       1.firewalld的基本使用 启动: systemctl start firewalld 关闭: systemctl stop ...

  5. 移动端自定义输入框的vue组件 ----input

    <style scoped lang="less"> .keyboard { font-family: -apple-system, BlinkMacSystemFon ...

  6. Entity Framework Extended 批量删除

    public static class DbContextExtensions { public static void DeleteBatch<T>(this DbContext con ...

  7. 深入浅出 Java Concurrency (38): 并发总结 part 2 常见的并发场景[转]

    常见的并发场景 线程池 并发最常见用于线程池,显然使用线程池可以有效的提高吞吐量. 最常见.比较复杂一个场景是Web容器的线程池.Web容器使用线程池同步或者异步处理HTTP请求,同时这也可以有效的复 ...

  8. 服务器迁移部署PosApp

    绑定 基本配置 高级设置

  9. ansible 安装 使用 命令 笔记 生成密钥 管控机 被管控机 wget epel源

      ansible 与salt对比 相同 都是为了同时在多台机器上执行相同的命令 都是python开发 不同 agent(saltstack需要安装.ansible不需要) 配置(salt配置麻烦,a ...

  10. PAT甲级——A1090 Highest Price in Supply Chain

    A supply chain is a network of retailers(零售商), distributors(经销商), and suppliers(供应商)-- everyone invo ...