|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
你所列的那些其实差不多都可以称为应用服务器(servlet应该说是一种语言更合适)java是开放的,相同的工具就会有很多公司在做,加上java已经发展了很多年了,因此这些工具就很多了。他们很多都是类似的。一个被停止的工具常驻内存重而不被利用的话,会占用良多体系资本,因而.net的渣滓接纳器就会将它放在中断化行列中,一旦机会成熟,该工具就会被叫醒,并挪用他的finalize办法,来完全的闭幕他,可是使用这一机制,就能够将泯灭资本的巨型类放进到一个工具池中,在程序的全部保存期内反复的利用他(停止的标记是clr以为在历程中不存在任何该使用程序的根)。我们称这些巨型类为Expensive工具,上面来会商一下办理Expensive工具的工具池的布局。ClassExpensive{
StaticStackpool=newStack();
PublicstaticExpensiveGetObjectFromPool(){
Retun(Expensive)pool.Pop();
}
PublicstaticvoidShutdownThePool(){
Pool=null;
}
PublicExpensive(){
//先机关工具
Pool.push(this);
}
Finalize(){
If(pool!=null){
GC.RegisterForFinally(this;)//先把他唤醒挨宰
Pool.push(this);//将“苏醒的”工具到场到工具池中,让他妙手回春
}
}
}
Classapp{
Staticvoidmain(){
Newexpensive();
……
Expensivee=Expensiv.GetObjectFromPool();
//上面就能够利用e了
Expensive.shutdownThepool();//封闭使用程序前,先封闭工具池,不然会在内存中留下“孔洞”,由于Finalize已被重写了
}
}
也许唯一可以让世人留恋Java的理由就剩下它的王牌——跨平台。 |
|