摘要:
利用对象代龄提高垃圾收集效率 代龄是旨在提高垃圾收集器性能的一种机制。一个基于代龄的垃圾收集器有以下几点假设:对象越新,其生存期越短。对象越老,其生存期越长。对托管堆的一部分执行垃圾收集要比对整个托管堆执行垃圾收集速度更快。 CLR将对象代龄分为0、1、2,共三代,且对每一代的对象所占用内存容量都设定了一个阀值,代龄越大,内存容量阀值也越大。代龄对象所占用内存超出阀值时,将引发垃圾收集。 在托管堆初始化时,其中不包括任何对象。这时添加到托管堆中的对象被称为第0代对象。当第0代对象所占用内存超过了阀值时,垃圾收集器就必须启动了。经过垃圾收集后存活下来的对象被认为是第1代对象,同时第0代对象暂时空 阅读全文
posted @ 2011-03-31 21:52
辛勤的代码工
阅读(352)
评论(0)
推荐(0)
摘要:
假设有这样一些数据结构,它们很容易创建但却需要大量的内存和时间。如:我们需要知道用户硬盘中所有目录和文件,我们可以很容易构造一个树来反映这些信息,当应用程序运行时,它可以引用内存中的树,而不必再访问用户的硬盘。这样显然会极大提高应用程序的性能。 但问题在于这个树可能会非常庞大,需要许多内存。如果用户转而访问应用程序的其余部分,那么这个树可能变得不再必要,却浪费着许多内存。我们可能会放弃这个树的根对象的引用,但如果用户又切换回应用程序的第一部分,那我们又需要重新构造该树。使用弱引用,我们可以方便、高效的处理这种情况。 弱引用对象是这样一种对象,如果我们放弃该对象的强引用,将其转至弱引用时,它允. 阅读全文
posted @ 2011-03-31 17:46
辛勤的代码工
阅读(275)
评论(0)
推荐(0)
摘要:
Finalize方法的问题:不能确定它会在何时被调用。由于它不是一个公有方法,我们不能显式调用它。 要提供显式释放或关闭对象的能力,一个类型通常要实现一种被称为Dispose的模式。所有定义了Finalize方法的类型都应该实现本节所描述的Dispose模式以给用户更多的控制权。 上节中OSHandle类实现的改进版,使用Dispose模式:using System;using System.Collections.Generic;using System.Text;using System.Runtime.InteropServices;namespace DisposeTest{ pub. 阅读全文
posted @ 2011-03-31 16:59
辛勤的代码工
阅读(393)
评论(0)
推荐(0)
浙公网安备 33010602011771号