垃圾回收器的原理
摘要:垃圾回收器(Garbage Collector)是CLR 里的一个功能,所以它只能处理CLR所管辖范围内的代码内存(即托管内存) 垃圾回收期会检查托管堆中是否有应用程序不再使用的任何对象。如果有,他们的内存就可以回收。 原理: JIT编译器生成本地代码时,还会创建一个内部使用的表。从逻辑上来讲,该表中的每个记录项都代表在方法的本地CPU指令中的一个字节偏移范围,针对每个范围,这个记录项都记录了包含着根的一组内存地址和CPU寄存器。(这个记录项的每个内存地址和CPU寄存器即是根,根只是抽象的说法) 一、 垃圾回收器开始执行时,它假设堆中的所有对象都是垃圾。垃圾回收器沿着线程栈上行以检查所有根..
阅读全文
posted @
2012-09-17 11:30
zrf
阅读(1640)
推荐(0)
C#委托与事件的本质区别
摘要:从定义上说,委托被编译器编译成一个类,所以它可以像类一样在任何地方定义,而事件被编译成一个委托类型的私有字段和两个公有add 和 remove 方法(有点类似于属性的定义)不过这两个方法都有一个参数,这个参数就是委托,所以,它只能定义在一个类里面。 从定义可知,委托是要是需要实例化的,它4个方法:一个构造器,Invoke,BeginInvoke和EndInvoke。构造器有两个参数分别是:一个对象引用,另一个是引用回调方法的一个IntPtr。然而实例化委托的代码的参数只是一个方法的引用。但这不是问题,编译器明白这其中的一切会获取对应的参数。然而事件是不需要实例化的因为他只是一个字段和两个方法.
阅读全文
posted @
2012-09-10 10:57
zrf
阅读(3677)
推荐(1)