* 这个程序非常巧妙的探测了一下垃圾回收机制,发现如下结论:
 * 当内存紧急时,才会启动垃圾回收GC.Collect()
 * 从此程序的运行上来看,delete是连续出现的,这体现了垃圾回收的强度。
 * new haha()这种东西确实是垃圾,会被回收的(除非它有timer,这个对象被另一个线程占用)

using System;
using System.Windows.Forms;
using System.Threading;
class haha
{
    int[] a=new int[10000000];
    haha()
    {
        Console.WriteLine("created");
    }
    void run()
    {
        Console.WriteLine("i am running");
    }
    ~haha()
    {
        Console.WriteLine("deleted");
    }
    static void Main(){
        for (int i = 0; i < 100; i++)
        {
            new haha().run();
            GC.Collect();
        }
        Application.Run();
    }
}

If something is running a thread,the GC cannot collect it.

 using System;
 using System.Windows.Forms;
 class haha
 {
     Timer t = new Timer();
     public haha()
     {
         t.Interval = ;//timer 时间间隔
         t.Tick += run;//每次触发的事件
         t.Start();//开始timer
     }
     void run(object o,EventArgs e)
     {
         Console.WriteLine(DateTime.Now);
     }
 }
 class me
 {
     static void Main()
     {
         new haha();//这个对象始终无法消灭,这个问题就像薛定谔的猫一样,无法观测,看之则有,不看则无。
         Application.Run(new Form());
     }
 }
 /*
  很久之后我才明白:
  * 如果一个对象正在运行,垃圾回收机制就不会收他;
  * 只有停止与此对象相关的一切线程、引用,这个对象才会被视作垃圾
  * 在这里Dispose一下就好了,但是这不是用于Form.timer,只适用于另两个timer。详见“c#中的三个timer”
  */

C# Gabbage Collecting System的更多相关文章

  1. CentOS 搭建Graylog集群详解

    1. Graylog2 简介 Graylog 是一个简单易用.功能较全面的日志管理工具,相比 ELK 组合, 优点: 部署维护简单,一体化解决方案,不像ELK三个独立系统集成. 查相比ES json语 ...

  2. 精确度量Linux下进程占用多少内存的方法

    背景 在Linux中,要了解进程的信息,莫过于从 proc 文件系统中入手去看. proc的详细介绍,可以参考内核文档的解读,里面有很多内容 yum install -y kernel-doc cat ...

  3. ORAchk-数据库健康检查好帮手

    ORAchk 之前被称为RACcheck,后来它的检查范围进行了扩展,改名为了ORAchk,它是在数据库系统进行健康检查的一个专用工具,这个工具主要用来检查软件的配置是否符合要求以及一些最佳实践是否被 ...

  4. App优化 Systrace

    简介 trace [tres] vt.跟踪,追踪; 追溯,探索; 探索; 查找; n.痕迹; 痕迹,踪迹; 微量,极少量; 1 1   1 trace [tres] vt.跟踪,追踪; 追溯,探索; ...

  5. 2.5 – Garbage Collection 自动垃圾回收 Stop-the-world vs. incremental vs. concurrent 垃圾回收策略

    2.5 – Garbage Collection  自动垃圾回收 Lua 5.3 Reference Manual http://www.lua.org/manual/5.3/manual.html# ...

  6. proc 文件系统学习

    proc.txt翻译 ------------------------------------------------------------------------------Version 1.3 ...

  7. Static Import Constant interface

    Static Import https://docs.oracle.com/javase/1.5.0/docs/guide/language/static-import.html In order t ...

  8. 【转】刚发现一个linux在线文档库。很好很强大。

    原文网址:http://blog.csdn.net/longxibendi/article/details/6048231 1.网址: http://www.mjmwired.net 2.比如查看这个 ...

  9. Arch系统软件列表

    1. 安装统计 2. 安装列表 3. 安装说明 4. 作为依赖项的安装列表 5. 更正 mangaro使用减的方式安装系统.开箱即用的豪华版本,大部分人需要的都有了,同样包括个别用户不需要的,配置方面 ...

随机推荐

  1. Ubuntu下安装Pyenv不成功,求指教

    虚拟机:VMware12.0 操作系统:Ubuntu16.04 LTS (新安装系统) 已经按照网上的步骤: 1.安装git: $sudo apt-get install git 2.安装依赖包: $ ...

  2. gcc编译参数-fPIC的一些问题

    gcc编译参数-fPIC的一些问题 (2012-07-26 15:41:08) 转载▼ 标签: linux compiler gcc -fpic it 分类: NSN_BspDriver ppc_85 ...

  3. RecycleView + CardView 控件简析

    今天使用了V7包加入的RecycleView 和 CardView,写篇简析. 先上效果图: 原理图: 这是RecycleView的工作原理: 1.LayoutManager用来处理RecycleVi ...

  4. Eclipse调试Bug的七种常用技巧

    1. 条件断点 断点大家都比较熟悉,在Eclipse Java 编辑区的行头双击就会得到一个断点,代码会运行到此处时停止. 条件断点,顾名思义就是一个有一定条件的断点,只有满足了用户设置的条件,代码才 ...

  5. 我的STL学习之路

    说起STL(标准模板库),相信了解C++的都不会陌生吧^_^.LZ是从大三开始学习C++(ps:不是科班出身),并慢慢接触使用STL的,在学校中使用STL比较多的情况是写数据结构代码,使用STL实现数 ...

  6. POJ1837 Balance[分组背包]

    Balance Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 13717   Accepted: 8616 Descript ...

  7. Miller-Rabin素数快速检测

    满足费马小定理 a^(n-1) === 1(mod n) --->伪素数       对于所有a belong Zn*,总存在满足的合数n,称为Carmichael数 ------------- ...

  8. No2. S2错题本

    ---恢复内容开始--- 正确答案:D,因为isFormField()是FileItem类的方法 正确答案:C,因为当//1处代码执行后,第0项就删除了,那么list.Add(1)内的对象就会自动补位 ...

  9. PHP从数据库导出EXCEL文件

    参考博客链接:http://www.cnblogs.com/huangcong/p/3687665.html 我的程序代码 原生导出Excel文件 <?phpheader('Content-ty ...

  10. [No00004D]深度思考好文:软件工程师的困境

    昨天是我一同学结婚的好日子,同学们大家聊各自的工作,有个同学突然问了我一句:我们同学中好像做软件的不多?如果再细分,好像做网络相关的更少? 回想起当时为何读计算机信息管理的专业,是因为那时听说读电脑未 ...