.net回收机制的使用
2006-04-11 17:07:28 来源:WEB开发网核心提示: 一个被终止的对象常驻内存重而不被使用的话,会占用很多系统资源,.net回收机制的使用,于是.net的垃圾回收器就会将它放在中止化队列中,一旦时机成熟,Class Expensive{Static Stack pool = new Stack();Public static Expensive GetObjectFr
一个被终止的对象常驻内存重而不被使用的话,会占用很多系统资源,于是.net的垃圾回收器就会将它放在中止化队列中,一旦时机成熟,该对象就会被唤醒,并调用他的finalize方法,来彻底的终结他,但是利用这一机制,就可以将耗费资源的巨型类放入到一个对象池中,在程序的整个生存期内重复的使用他(结束的标志是clr认为在进程中不存在任何该应用程序的根)。我们称这些巨型类为Expensive对象,下面来讨论一下管理Expensive对象的对象池的结构。
Class Expensive{
Static Stack pool = new Stack();
Public static Expensive GetObjectFromPool(){
Retun (Expensive) pool.Pop();
}
Public static void ShutdownThePool(){
Pool = null;
}
Public Expensive(){
//先构造对象
Pool.push(this);
}
Finalize (){
If(pool!=null){
GC.RegisterForFinally(this;)//先把他叫醒挨宰
Pool.push(this);//将“清醒的”对象加入到对象池中,让他起死回生
}
}
}
Class app{
Static void main(){
New expensive();
……
Expensive e = Expensiv. GetObjectFromPool();
//下面就可以使用e了
Expensive.shutdownThepool();//关闭应用程序前,先关闭对象池,否则会在内存中留下“孔洞”,因为Finalize已经被重写了
}
}
- ››Netpas加速 让非电信宽带用户流畅上网
- ››net中fckediter的图片上传时候点击\浏览服务器\出...
- ››Netmsg局域网聊天程序
- ››NetAirus指控苹果iPhone侵犯其专利
- ››Netflix 在线影视播放程序将登陆 iPhone
- ››Net中各种不同的对象创建方式的速度差异
- ››NetNewsWire 功能简单 界面快速 Reader 浏览器
- ››NET-使用Js调用WebService
- ››Net 应用程序如何在32位操作系统下申请超过2G的内...
- ››NET 4.0新特性-- Corrupted State Exceptions
- ››NET应用程序的本地化及RESGEN.exe, AL.exe介绍
- ››NetMeeting在办公网络中的应用
更多精彩
赞助商链接