请问如何在JS中释放使用new ActiveXObject创建的对象?

abent 2002-03-17 01:49:56
我做了试验,看来JS帮助中提到的对一个变量赋null值可以清空对象只是针对普通变量,而用new ActiveXObject创建的对象无效:
var objTest = new ActiveXObject("MSXML2.DOMDocument");
中的objTest只是DOMDocument对象的一个引用,而该对象只要产生,则除非浏览器关闭,否则不会被释放。不知道我的理解是否正确,哪位大侠如果知道如何释放也请指教一二,不胜感激!
...全文
842 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
KiteGirl 2002-03-24
  • 打赏
  • 举报
回复
在VBScript下使Set objTest=Nothing好象可以。
karma 2002-03-23
  • 打赏
  • 举报
回复
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
abent 2002-03-23
  • 打赏
  • 举报
回复
无为兄:
看来的确是这样:作为局部变量来说,已经作为垃圾收集了,可是如果是全局变量则似乎不会或者部分不会作为垃圾收集,或者说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();是那路神仙,怎么没见过呀,还请无为兄指教!
karma 2002-03-17
  • 打赏
  • 举报
回复
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
karma 2002-03-17
  • 打赏
  • 举报
回复
try

objTest = 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
abent 2002-03-17
  • 打赏
  • 举报
回复
可是我 delete objTest;后还是可以用alert(objTest.xml)看到这个对象呀?
BrentIvan 2002-03-17
  • 打赏
  • 举报
回复
delete

87,996

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧