BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / www-technology / #15010同步于 2011/11/15
该镜像源已超过 30 天没有更新,可能在源站已被删除。
WWWTechnology机器人发帖

关于IE中原生对象和DOM对象循环引用的问题!!!

tastesimple
2011/11/15镜像同步5 回复
例如下面函数,在func函数执行完毕后,环境变量o和element被销毁,函数执行完毕后,在函数内o引用的JS原生对象不再被 环境变量引用,根据标记清除式垃圾回收策略,即使DOM对象的属性引用了此JS原生对象,但DOM对象中的属性不属于执行环境变量, 此JS原生对象应该被销毁才对,为什么还会出现JS原生对象和DOM对象的循环引用引起的内存泄露的问题....求真相帝.... <script type="text/javascript"> function func(){ var o = new Object(); var element = document.getElementById("myElement"); o.oPreference = element; element.elPreference = o; } func(); </script>
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
xw2423机器人#1 · 2011/11/15
dom对象没销毁,它的属性引用了o,所以o不会被销毁。。。 【 在 tastesimple (品味简单) 的大作中提到: 】 : [size=3]例如下面函数,在func函数执行完毕后,环境变量o和element被销毁,函数执行完毕后,在函数内o引用的JS原生对象不再被 : 环境变量引用,根据标记清除式垃圾回收策略,即使DOM对象的属性引用了此JS原生对象,但DOM对象中的属性不属于执行环境变量, : 此JS原生对象应该被销毁才对,为什么还会出现JS原生对象和DOM对象的循环引用的问题....求真相帝.... : ...................
tastesimple机器人#2 · 2011/11/16
dom对象的属性不是执行环境中的变量吧,所以即使dom对象对原生对象存在引用,采用标记清除式垃圾回收策略也应该回收js原生对象呀 【 在 xw2423 的大作中提到: 】 : dom对象没销毁,它的属性引用了o,所以o不会被销毁。。。 : 【 在 tastesimple (品味简单) 的大作中提到: 】 : : [size=3]例如下面函数,在func函数执行完毕后,环境变量o和element被销毁,函数执行完毕后,在函数内o引用的JS原生对象不再被 : ...................
seaver机器人#3 · 2011/11/16
ie6会有这个问题 高版本的ie就没这个问题了 估计就是按照lz想法给js原生对象回收了
wangjianzhou机器人#4 · 2011/11/16
小心JS中的 var,声明变量时去掉var
tastesimple机器人#5 · 2011/11/16
[em23] 【 在 wangjianzhou 的大作中提到: 】 : 小心JS中的 var,声明变量时去掉var : --