tryobjTest = null;objTest is ready to be garbage collected. If you insist, you can call CollectGarbage(); to get the memory released, but it is not recommended
sorry, I guess I am sleep,objTest is ready to be garbage collected. ===> the object pointed to by objTest before is ready to be garbage collected
无为兄: 看来的确是这样:作为局部变量来说,已经作为垃圾收集了,可是如果是全局变量则似乎不会或者部分不会作为垃圾收集,或者说ie的垃圾收集机制无法判断全局变量何时作为垃圾,不知这个说法对不对。 比如以下代码: <script language="jscript"> <!-- var arrTest = new Array();function test(){ var i; for(i = 0; i < 10000; i++){ arrTest[i] = new ActiveXObject("MSXML2.DOMDocument"); } } //--> </script> 执行完毕,句柄狂增40000个,然后我又执行: arrTest.length = 0; 句柄减少了30000个,但还是比初始状态多出10000左右。如果不是数组而是全局变量则根本不会减少,或者说我没有找到如何释放全局变量性质的ActiveX对象的方法。 另外CollectGarbage();是那路神仙,怎么没见过呀,还请无为兄指教!
CollectGarbage() is an undocumented JScript function, read this article for more information on Jscirpt garbage collection:http://msdn.microsoft.com/library/en-us/dnmag01/html/web0105.asp?frame=true
CollectGarbage();
to get the memory released, but it is not recommended
===>
the object pointed to by objTest before is ready to be garbage collected
看来的确是这样:作为局部变量来说,已经作为垃圾收集了,可是如果是全局变量则似乎不会或者部分不会作为垃圾收集,或者说ie的垃圾收集机制无法判断全局变量何时作为垃圾,不知这个说法对不对。
比如以下代码:
<script language="jscript">
<!--
var arrTest = new Array();function test(){
var i; for(i = 0; i < 10000; i++){
arrTest[i] = new ActiveXObject("MSXML2.DOMDocument");
}
}
//-->
</script>
执行完毕,句柄狂增40000个,然后我又执行:
arrTest.length = 0;
句柄减少了30000个,但还是比初始状态多出10000左右。如果不是数组而是全局变量则根本不会减少,或者说我没有找到如何释放全局变量性质的ActiveX对象的方法。
另外CollectGarbage();是那路神仙,怎么没见过呀,还请无为兄指教!