无用单元的收集

2008-04-09 04:41:39来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

  CLR中的无用单元收集程序监控一个软件的资源,一旦系统中的可用资源减少到了一个极限,发现无用的对象后就会消灭它。无用单元的收集带来的一个好处是你无需担心最常见的循环调用问题,在一个循环调用中,子对象调用父对象,而父对象又调用了子对象。在一个调用调度系统中,循环调用可能使任一对象都不能被释放或消灭,而无用单元收集程序则可以发现这种循环调用,并消灭它,这也意味着释放最近对一个对象的调用无需立即消灭这个对象。

  无用单元收集带来的后果是:我们无须再依赖于一个类的Terminate事件。事实上,如果线程被阻塞了,Terminate事件也不可能得到执行,这也就是所谓的不确定性终止,与它相对的是由COM提供的确定性终止。确定性终止的缺乏和由于无用单元收集而引起的对内存单元的重新调度和紧凑在互联网上的新闻组中引起了热烈的讨论。我认为这些限制会引起你的不快,因为你已经习惯了确定性终止,也许你并不依赖于Terminate事件而认为这无关紧要。无用单元收集程序并非是万能的,在使用时仍然会有许多限制。

  从引用计数到无用单元收集只是说明Visual Studio.NET的基础架构不再是COM的一部分。在VB.NET中,你仍然可以使用ActiveX服务器、ActiveX控制等COM对象,但必须通过适当的"wrapper"才行。提到"wrapper"这个词,就可能意味着性能上的折扣和执行上的差异。如果要移植一个使用了大量的COM对象的软件,就需要进行很好的测试和规划,甚至重新设计部分代码才能确保移植成功。坦率地说,你会遇上挫折,还记得把VBX向OCX移植的恶梦吗?
156

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:完全对象化

下一篇:自由线程带来的风险