zoukankan      html  css  js  c++  java
  • .net垃圾回收机制

     static void Main(string[] args)
            {
                Console.WriteLine(
    "当前托管堆上分配了{0}K字节内存空间。", (GC.GetTotalMemory(false/ 1024).ToString());
                Console.WriteLine(
    "输入系统最大支持{0}代。\n", (GC.MaxGeneration + 1).ToString());
                var obj 
    = new { num = 1, txt = "abc" };
                Console.WriteLine(
    "obj创建完成,所引用对象当前为第{0}代。\n", GC.GetGeneration(obj).ToString());
                
    //对第0代进行强制回收,所有对象终结前挂起当前进程
                GC.Collect(0);
                GC.WaitForPendingFinalizers();
                Console.WriteLine(
    "第{0}代强制回收完成。");
                getmsg(obj);
                GC.Collect();
                GC.WaitForPendingFinalizers();
                Console.WriteLine(
    "所有代强制回收完成。");
                getmsg(obj);
                obj 
    = new { num = 1, txt = "abc" };
                Console.WriteLine(
    "\nobj对象被赋予了同匿名类型的新实例。");
                getmsg(obj);
                
    for (int i = 0; i < 3; i++)
                {
                    Console.WriteLine(
    "第{0}代已经被收回了{1}次。", i, GC.CollectionCount(i));
                }

                Console.ReadKey();
            }
            
    static void getmsg(object o)
            {
                
    string objgen = GC.GetGeneration(o).ToString();
                Console.WriteLine(
    "obj所引用对象当前为第{0}代。\n", objgen);
            }
  • 相关阅读:
    数据库内外连接以及自然连接
    Mybatis的一级二级缓存
    彻底弄懂CAS单点登录
    Tomcat部署项目的方式
    redis集群脑裂以及解决方案
    AOP分析--代理方式的选择
    线程池
    数据结构--结构体
    Python程序--选择判断
    C语言--密码问题
  • 原文地址:https://www.cnblogs.com/zhangtao/p/1965002.html
Copyright © 2011-2022 走看看