日期:2014-05-16  浏览次数:20369 次

JavaScript没有析构函数和不能即时销毁对象是一个巨大的缺陷
即时销毁, 也就是变量不再使用的时候, 会立即别销毁, 是一个非常重要的需求. JavaScript内置的自动清理几乎成为JavaScript语言的传统, 但是, 我们还是有很多需求, 就是希望大量的内存被即时的释放.

for(var i=0;i<0x1000000;i++){
  var obj = new SomeThing();
  obj.doSomeThing();
}

这种情况下, 大量的对象被创建, 但是直到达到临界点, 垃圾收集器才会清理一下内存, 但是实际上, 在C++语言中, 销毁obj对象不需要任何的额外开销, 因为obj在栈上, 它压根就不需要销毁, 实际上只有一个obj对象.

而JavaScript不断的创建大量新对象的确是非常的"愚蠢", 甚至引擎优化上也没有采用什么机制, 能够把大量无用的obj高效的销毁.

而另一个脚本语言, PHP就有销毁机制, 如果一个局部变量没有被返回给其它外部代码, 它立刻就被销毁了. 这是一种非常高效而方便的机制.

------解决方案--------------------
引用:
而另一个脚本语言, PHP就有销毁机制, 如果一个局部变量没有被返回给其它外部代码, 它立刻就被销毁了. 这是一种非常高效而方便的机制.

js也是这种机制,不知楼主测试的结果怎么样?
------解决方案--------------------
给个传送门:JavaScript:The World's Most Misunderstood Programming Language
http://www.crockford.com/javascript/javascript.html
下面是带翻译的:
http://blog.csdn.net/uoyevoli/article/details/744915