问一个很弱的问题,获取DOM元素后,不再使用时需要显性置为null吗?

hanyuxinting 2013-02-18 04:41:28
问一个很弱的问题,获取DOM元素后,不再使用时需要显性置为null吗?

比方 var el = document.getElementById('xxx');

这个 el 在不使用后,需要马上给它设置成 null 吗,还是等待自动回收。

另外,js对这种对象是在什么时候自动回收的。。


请指教~
...全文
383 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaofan_sap 2013-02-18
  • 打赏
  • 举报
回复
问题1:ie9之前的话 ,可以使用(如果对象很多的话,鼓励使用),因为ie9之前的 dom,bom 都是采用引用计数的策略来垃圾收集的。 所谓引用技术:跟踪记录每个值被引用的次数。当声明一个变量并讲一个引用类型的值复制给他时,这个指的引用次数就+1.如果同一个值又被赋值给其他的变量,这+1。反之,如果如果包含对这个值引用的变量得到了另外一个值,那么引用计数-1. 当引用计数是0的时候 ,就说明没有引用这个值的变量了,那么垃圾回收的时候 就可以释放他的内存。 对于普通的变量 没有必要回收。 问题2:ie7之前的gc时间是根据内存分配量运行的。具体是 256个变量,4096个对象字面量或者数组或者64kb的字符串。如果达到其中任何一个指标 ,这gc就运行一次。 ie7后做了修正:临界值改成动态的了。初始值与ie6一样。如果gc回收的内存分配量地域15%,则上述的指标的临界值就会加倍。如果回收了85%的内存分配量,则将各种临界值重置会默认值
wtcsy 2013-02-18
  • 打赏
  • 举报
回复
我没说没必要 你别误会啊 看看这篇文章啊 大哥 http://blog.csdn.net/dead_of_winter/article/details/2277673
hanyuxinting 2013-02-18
  • 打赏
  • 举报
回复
引用 2 楼 wzs_xyz 的回复:
无需,赋值为null也无用,当dom加入到页面中,就是页面对象的成员,会一直生存,在从页面中移除前,资源是无法被释放的. 仅仅把所谓的"变量"释放是无意义的,变量引用的资源才是根本,某些情况下把变量赋值为null是为了快速回收资源(在对象没有被还在生存的变量引用时,对象占用的资源会自动回收),当即使赋值为null也无法释放资源时,赋值为null是无意义的 ……
好的,学习~~~多谢~~
hanyuxinting 2013-02-18
  • 打赏
  • 举报
回复
引用 1 楼 wtcsy 的回复:
局部变量 自己就可以回收了(如果没有被其他函数里面引用,就是闭包那种,那种变量GC不回收) GC的回收机制是 隔一段时间回收不用的局部变量咯 (多长时间我也不知道 ) 因为是单线程 所以可能会给当前正在运行的程序带来点延迟 你的问题是什么时候回收 其实一直在回收 具体是什么时间,我不知道啊 如果设置成null了 其实这个变量还是存在……
嗯嗯,我也是觉得没有必要,想确定一下。多谢。~~ 我看了些关于GC的文字,也没有针对这个做回收的。 我再看看,多谢多谢。
未知数 2013-02-18
  • 打赏
  • 举报
回复
无需,赋值为null也无用,当dom加入到页面中,就是页面对象的成员,会一直生存,在从页面中移除前,资源是无法被释放的. 仅仅把所谓的"变量"释放是无意义的,变量引用的资源才是根本,某些情况下把变量赋值为null是为了快速回收资源(在对象没有被还在生存的变量引用时,对象占用的资源会自动回收),当即使赋值为null也无法释放资源时,赋值为null是无意义的
wtcsy 2013-02-18
  • 打赏
  • 举报
回复
局部变量 自己就可以回收了(如果没有被其他函数里面引用,就是闭包那种,那种变量GC不回收) GC的回收机制是 隔一段时间回收不用的局部变量咯 (多长时间我也不知道 ) 因为是单线程 所以可能会给当前正在运行的程序带来点延迟 你的问题是什么时候回收 其实一直在回收 具体是什么时间,我不知道啊 如果设置成null了 其实这个变量还是存在啊 那个变量的值是null 只是这样就断开了于变量与dom的关联 听说是因为ie6的循环引用才需要断开 所以我认为把变量设置成了null 还是要等GC 才能真正的从内存中删除 以上都是个人见解...... 一篇文章 http://www.cnblogs.com/hyddd/archive/2013/02/07/2908598.html
随着通信电子技术的迅速发展,信息技术给家居行业产生了深远的影响,家居环境的智能化监控已经成为智能家居的一个重要的发展方向。人们逐渐对自己的生活提出一种更高的要求,他们需要一种智能化、可交互,并且融合现代创新科技的产品来改善他们的生活环境,使他们生活更加安全、舒适、便捷、智能。本文根据智能家居的发展背景和研究现状,并且从实用性和可行性角度出发,研究设计了一种基于STM32单片机的智能家居系统。该系统由一个多功能综合的技术系统组成,各个多功能子系统间具有协同配合能力。基于STM32单片机实现的功能子系统包括:智能温度检测,智能湿度检测,智能烟雾/火灾检测智能检测,无线传输,人机交互机构,风扇调节,报警模块。 整个系统分为前端51单片机采集板和后端STM32单片机接收板。 采集板使用DHT11温湿度传感器、MQ烟雾传感器完成室内家居环境的采集。然后通过nRFL24L01将采集到的数据发送给后端。接收板使用LCD1602完成数据显示、使用蜂鸣器模块报警,使用风扇驱动模块调节室内家居环境。本文完成了智能家居控制系统前端、后端软硬件的设计,使用Altium designer绘制了电路原理图,使用Keil C完成了51单片机和STM32单片机的编程与调试。 最后,对本文设计的基于STM32的智能家居控制系统进行部署调试。试验结果表明,该系统可成功应用在智能家居环境检测调节和火灾安全防护的领域,可提高家居生活智能化水平。

87,988

社区成员

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

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