首页 新闻 会员 周边

页面初始化时标签在内存中以什么方式保存

0
悬赏园豆:100 [已解决问题] 解决于 2013-04-01 11:04

比如html中一个div通过document.getElementById等dom方法得到的是dom对象,那么在通过dom方法得到dom对象之前这个div在内存中保存了什么数据,以什么形式保存在内存中的,能通过dom方法得到dom对象。还是说页面初始化时就对div保存了dom对象。

还有,当var dom=document.getElementById(id);得到的dom变量对象无用时就要做释放,dom=null;那么此时释放的是dom对象的内存空间吧。这样只能说明初始化时div保存在内存中的不是dom对象,那么到底是什么形式保存的这个标签的信息数据的。

small-joker的主页 small-joker | 初学一级 | 园豆:144
提问于:2013-03-28 09:55
< >
分享
最佳答案
0

各浏览器内核的实现方式不一样,所以在内存中是怎么存储的也不一样,不过,一般情况下都是以树的形式保存的。而且dom的渲染一般也是和js的控制分离的,所以这个问题需要你针对具体的浏览器来分析,以及正确理解浏览器中渲染引擎和js引擎的原理。

收获园豆:70
sinhbv | 老鸟四级 |园豆:2579 | 2013-03-28 10:46

你说的和我的问题有关,但应该不是主要的关系,楼下的说得已经很近了,不过还是没有太明白这里面的关系。

small-joker | 园豆:144 (初学一级) | 2013-03-28 15:29
其他回答(1)
0

一般来说,整个网页在内存中是以DOM树形结构存储在内存中的。所有标签都是这个树上的一个节点。你通过方法找到一个节点,也只是拿到了这个节点的引用。给你的变量赋空,也只是说明你不再引用它了。你既没有创建这个对象,也不能销毁它。你能决定的只是是不是引用它。

收获园豆:30
Luke Zhang | 园豆:293 (菜鸟二级) | 2013-03-28 13:50

这里如果变量赋值只是一个引用的话, 那变量只要保存所引用的节点在内存中的地址就行了,那其实变量所占的空间也没多大,那为什么要做手工释放呢。  我 的理解是之所以要手工释放的这块的内存,不只变量的,还有变量所引用的那个dom对象的内存(这块会占比变量内存大的多的空间)。这个dom对象的内存就不会是那个树节点的引用了。那 这样你说的就不符合了。

支持(0) 反对(0) small-joker | 园豆:144 (初学一级) | 2013-03-28 15:27
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册