C# Gabbage Collecting System
* 这个程序非常巧妙的探测了一下垃圾回收机制,发现如下结论:
* 当内存紧急时,才会启动垃圾回收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的更多相关文章
- CentOS 搭建Graylog集群详解
1. Graylog2 简介 Graylog 是一个简单易用.功能较全面的日志管理工具,相比 ELK 组合, 优点: 部署维护简单,一体化解决方案,不像ELK三个独立系统集成. 查相比ES json语 ...
- 精确度量Linux下进程占用多少内存的方法
背景 在Linux中,要了解进程的信息,莫过于从 proc 文件系统中入手去看. proc的详细介绍,可以参考内核文档的解读,里面有很多内容 yum install -y kernel-doc cat ...
- ORAchk-数据库健康检查好帮手
ORAchk 之前被称为RACcheck,后来它的检查范围进行了扩展,改名为了ORAchk,它是在数据库系统进行健康检查的一个专用工具,这个工具主要用来检查软件的配置是否符合要求以及一些最佳实践是否被 ...
- App优化 Systrace
简介 trace [tres] vt.跟踪,追踪; 追溯,探索; 探索; 查找; n.痕迹; 痕迹,踪迹; 微量,极少量; 1 1 1 trace [tres] vt.跟踪,追踪; 追溯,探索; ...
- 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# ...
- proc 文件系统学习
proc.txt翻译 ------------------------------------------------------------------------------Version 1.3 ...
- Static Import Constant interface
Static Import https://docs.oracle.com/javase/1.5.0/docs/guide/language/static-import.html In order t ...
- 【转】刚发现一个linux在线文档库。很好很强大。
原文网址:http://blog.csdn.net/longxibendi/article/details/6048231 1.网址: http://www.mjmwired.net 2.比如查看这个 ...
- Arch系统软件列表
1. 安装统计 2. 安装列表 3. 安装说明 4. 作为依赖项的安装列表 5. 更正 mangaro使用减的方式安装系统.开箱即用的豪华版本,大部分人需要的都有了,同样包括个别用户不需要的,配置方面 ...
随机推荐
- js有关时间日期的操作
var myDate = new Date();var date_string = myDate.getFullYear()+""+((myDate.getMonth()+1)&l ...
- jQuery中大于gt和小于lt
gt,lt计数都是下标从0开始,而且不论大小于,都不包括它自己本身. <!DOCTYPE html> <html> <head> <meta charset= ...
- [译] 企业级 OpenStack 的六大需求(第 1 部分):API 高可用、管理和安全
全文包括三部分: 第一部分:API 高可用和管理以及安全模型 第二部分:开放架构和混合云兼容 第三部分:弹性架构和全球交付 引言 OpenStack 是构造企业级私有云的非常理想的基础.它立志成为新一 ...
- Windows Azure 虚拟机的IP地址操作
Windows Azure上的一个虚拟机对应两个IP地址,VIP和DIP. VIP,公网IPv4地址,动态分配.虚拟机停止(deallocate,在管理控制台上关机或者使用PowerShell关机)后 ...
- [转]Membership三步曲之入门篇 - Membership基础示例
本文转自:http://www.cnblogs.com/jesse2013/p/membership.html Membership三步曲之入门篇 - Membership基础示例 Members ...
- 认识与入门 Markdown,Markdown教程
一.认识 Markdown 在刚才的导语里提到,Markdown 是一种用来写作的轻量级「标记语言」,它用简洁的语法代替排版,而不像一般我们用的字处理软件 Word 或 Pages 有大量的排版.字体 ...
- monkey学习笔记
Monkey一. Monkey 是什么?Monkey是Android中的一个命令行工具,它其实就是SDK中附带的一个工具,可以运行在模拟器里或实际设备中. 二.Monkey 测试的目的?Monkey测 ...
- 拓扑排序 POJ2367Genealogical tree[topo-sort]
---恢复内容开始--- Genealogical tree Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 4875 A ...
- ExecutorType 的类型
- CSS中的常用属性
一 CSS文字属性:color : #999999; /*文字颜色*/font-family : 宋体,sans-serif; /*文字字体*/font-size : 9pt; /*文字大小*/fon ...