zoukankan      html  css  js  c++  java
  • GC垃圾回收

    c#代码垃圾回收:

    托管对象:GC回收,

    非托管对象:程序员自己释放

    class Program
        {
            static void Main(string[] args)
            {
                //using (GCTest gc=new GCTest())
                //{
                //    int a = 1;
                //}
                method();
                GC.Collect();//强制GC回收垃圾,触发对象析构函数,对象终结器,即~GCTest()方法
                Console.ReadKey();
            }
            static void method()
            {
                GCTest gc = new GCTest("a");
                gc.Dispose();
                GCTest gc2 = new GCTest("b");
                gc2.Dispose();
            }
        }
        
        class GCTest : IDisposable
        {
            private string Name { get; set; }
    
            public GCTest(string name)
            {
                this.Name = name;
            }
            #region IDisposable Support
            private bool disposedValue = false; // 要检测冗余调用
    
            protected virtual void Dispose(bool disposing)
            {
                if (!disposedValue)
                {
                    if (disposing)
                    {
                        // TODO: 释放托管状态(托管对象)。
                    }
    
                    // TODO: 释放未托管的资源(未托管的对象)并在以下内容中替代终结器。
                    // TODO: 将大型字段设置为 null。
    
                    disposedValue = true;
                }
            }
    
            // TODO: 仅当以上 Dispose(bool disposing) 拥有用于释放未托管资源的代码时才替代终结器。
            //~GCTest()
            //{
            //    // 请勿更改此代码。将清理代码放入以上 Dispose(bool disposing) 中。
            //    Dispose(false);
            //}
    
            // 添加此代码以正确实现可处置模式。
            public void Dispose()
            {
                // 请勿更改此代码。将清理代码放入以上 Dispose(bool disposing) 中。
                Dispose(true);
                // TODO: 如果在以上内容中替代了终结器,则取消注释以下行。
                GC.SuppressFinalize(this);//防止GC重复收集垃圾,执行此代码,GC就不执行~GCTest()了
            }
            #endregion
    
        }
    

      

  • 相关阅读:
    学习flying logic
    7-47 两数之和 (30 分)
    7-44 jmu-python-区间数之和 (10 分)
    7-45 jmu-python-涨工资 (10 分)
    7-42 jmu-python-找字符 (15 分)
    7-43 jmu-python-字符串异常处理 (20 分)
    7-40 jmu-python-统计成绩 (15 分)
    7-41 jmu-python-最佳身高 (10 分)
    7-35 jmu-python-求三角形面积及周长 (10 分)
    7-36 jmu-python-统计字符个数 (10 分)
  • 原文地址:https://www.cnblogs.com/liuqiyun/p/9511804.html
Copyright © 2011-2022 走看看