CreateObject与New有什么区别?

解决方案 »

  1.   

    createobject与new 本质的不同。
    createobject与new 的关键区别就是声明后系统对资源的控制权不一样。
    createobject是由内存中重新创建一个实例而不是简单的资源计数器+1的概念。如果内存中存在一个这样的实例,编译器不会理会这个实例而是将对象重新创建一个。实际上是一个完全独立的新的资源实例。并且不受GC的资源回收控制,必须自己回收。
    new声明的时候,编译器回自动寻找内存中的相应实例,找到了以后,将资源计数器+1,并不会在内存中重新声明内存地址空间,他是受GC限制的,当编译器运行完毕后,会自动将资源编译器里面的该对象的资源计数器-1,如果为计数器0的话就自动释放该对象。
    1. new 为对象的前期绑定,在建立对象时会通过scm进行对象管理,此方法在编译时慢,运行时快
    2.createobject为对象的后期绑定,在建立对象是不通过scm进行对象管理,适应脚本应用程序,客户端或分布式程序,在编译时快,运行所占时间比较慢
    3.所有对象都要set object=nothing
    4.尽量以dll库建立对象,而不以.ocx建立对象,以减少所占资源
      

  2.   

    createobject与new 本质的不同。
    createobject与new 的关键区别就是声明后系统对资源的控制权不一样。
    createobject是由内存中重新创建一个实例而不是简单的资源计数器+1的概念。如果内存中存在一个这样的实例,编译器不会理会这个实例而是将对象重新创建一个。实际上是一个完全独立的新的资源实例。并且不受GC的资源回收控制,必须自己回收。
    new声明的时候,编译器回自动寻找内存中的相应实例,找到了以后,将资源计数器+1,并不会在内存中重新声明内存地址空间,他是受GC限制的,当编译器运行完毕后,会自动将资源编译器里面的该对象的资源计数器-1,如果为计数器0的话就自动释放该对象。