关于IE的内存泄漏与JavaScript内存释放

来源:互联网 发布:网络舆情监测员职责 编辑:程序博客网 时间:2024/04/26 11:35

先说一些JavaScript中的一些基本性缺点问题。

1:兼容性低

在WWW 上有很多浏览器,如Netscape Navigator,Mosaic和HotJava等,但每种浏览器支持JavaScript的程度是不一样的,支持和不完全支持JavaScript的 浏览器在浏览一个带有JavaScript脚本的主页时,效果会有一定的差距,有时甚至会显示不出来。

结果,Javascript的开发人员常常需要针对不同的浏览器开发不同的版本。无形中工作量增加,而且基本上全都是重复性的工作。这是我们所不愿意看到的

2:造成内存泄漏
JavaScript是内存管理的语言。这意味着JavaScript具有内置的信息包收集功能,因此能够抽取不再有引用路径使用的变量并重新分配这些变量所使用的内存。

作为基本工作原理这很好,但是在模型对象和察看元素之间互相引用时,由于这些循环引用,你就不能依靠这个功能来实现你的内存使用最优化。从原则上讲,对象为零,则元素为零,但是如果这时从元素到对象的向后引用,那么信息包搜集器不会动这些对象。

现在,问题出来了:在文件对象模型中,任何文件树中的DOM节点都可能被树中的其它元素引用,不论其是否被其他对象所引用!因此任何在信息包收集器中经过标注的被DOM节点向后引用的对象,在这一方向必须为空,否则其内存就会一直处于已分配状态。而实际上,程序员常常忽视这点。这就是为什么很多大型网页游戏打开后内存嗖嗖的往上飚。这是目前被抱怨最多的avaScript的缺点。

3:对流媒体的支持

无,只能使用内嵌其他播放器的方法。

Javascript最初的设计目标是“让网页动起来”。这一点,它已经实现了,而且还有一些突破。但是,“动起来”只是“动起来”,这是不够的。在Javascript面对Rich Application的时候,它就有些力不从心了。

现在,如果要讨论javascript的发展,不应该局限于Javascript,而应该从HTML(DHTML),DOM,Javascript,CSS联合考虑。从浏览器应用程序(请原谅我发明了这个词“浏览器应用程序”)的角度出发。