clr中的无用单元收集程序监控一个软件的资源,一旦系统中的可用资源减少到了一个极限,发现无用的对象后就会消灭它。无用单元的收集带来的一个好处是你无需担心最常见的循环调用问题,在一个循环调用中,子对象调用父对象,而父对象又调用了子对象。 在一个调用调度系统中,循环调用可能使任一对象都不能被释放或消灭,而无用单元收集程序则可以发现这种循环调用,并消灭它,这也意味着释放最近对一个对象的调用无需立即消灭这个对象。
无用单元收集带来的后果是:我们无须再依赖于一个类的terminate事件。事实上,如果线程被阻塞了,terminate事件也不可能得到执行,这也就是所谓的不确定性终止,与它相对的是由com提供的确定性终止。确定性终止的缺乏和由于无用单元收集而引起的对内存单元的重新调度和紧凑在互联网上的新闻组中引起了热烈的讨论。我认为这些限制会引起你的不快,因为你已经习惯了确定性终止,也许你并不依赖于terminate事件而认为这无关紧要。无用单元收集程序并非是万能的,在使用时仍然会有许多限制。
从引用计数到无用单元收集只是说明visual studio.net的基础架构不再是com的一部分。在vb.net中,你仍然可以使用activex服务器、activex控制等com对象,但必须通过适当的"wrapper"才行。提到"wrapper"这个词,就可能意味着性能上的折扣和执行上的差异。如果要移植一个使用了大量的com对象的软件,就需要进行很好的测试和规划,甚至重新设计部分代码才能确保移植成功。坦率地说,你会遇上挫折,还记得把vbx向ocx移植的恶梦吗?
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器