网络编程
位置:首页>> 网络编程>> JavaScript>> 浏览器中的内存泄露

浏览器中的内存泄露

作者:winter 来源:winter 博客 发布时间:2008-05-03 16:53:00 

标签:内存,泄露,浏览器,js

首先说说什么是内存泄露,在一个进程中,如果某一块内存无法访问,且直到进程结束为止也无法释放,那么就发生了内存泄露。通常这种情况发生在C++之类的手动管理内存的语言编写的程序中,程序员忘记delete或者free会导致内存泄露。本文主要讨论的是浏览器中的内存泄露问题,也就是说,javascript程序导致的内存泄露。

目前为止最权威的关于浏览器内存泄露的文章应该是以下2篇 分别来自微软的Understanding and Solving Internet Explorer Leak Patterns(中文版)和来自IBM的Memory leak patterns in JavaScript(中文版)

但是这2篇对js语言的认识不够深入,所以讨论的内存泄露问题和解决方案都存在一些偏差。更重要的是,他们太老了,没有介绍IE7的内存泄露新模式。希望本文下面的部分能让读到此文的人更加清晰的认识内存泄露问题。

1.javascript对象的基础知识

(1)创建对象

 js中创建对象的方式非常自由,通常有这样几种:直接量、new表达式、内置函数、函数调用。后面是几个例子:
 直接量:{"a":10,"b":30}
 new表达式:var o=new cls();
 内置函数:var e=document.createElement("div");var a=new ActiveXObject("XML2.0.XMLHTTP");
 函数调用:function f(){};f();

(2)特殊的对象——作用域对象

  值得一提的是函数调用也会创建对象

 function f(){
   var a=10;
   var b=20;
  }

尽管按照语言标准无法以任何方式访问,但是f函数在每次执行时都会创建一个有属性a和b的对象,这被称为作用域对象。而js将维护一个被称为scope chain的链表,它是一条由当前可访问的所有作用域对象组成的链表。因为js的作用域规则是定义时的作用域,所以每个函数对象被创建时都会以一个属性[[scope]]保存它的外部作用域链。

特别地,在FireFox中,允许用__parent__访问[[scope]]属性所属的函数

  关于js的更多,可以去查阅js标准文档ECMA262(HTML版),这里无法完整地介绍js的对象机制。

0
投稿

猜你喜欢

  • 在Oracle数据库中,DBA可以通过观测一定的表或视图来了解当前空间的使用状况,进而作出可能的调整决定。 一.表空间的自由空间 通过对表空
  •  获取图片宽度和高度的类,支持JPG,GIF,PNG,BMP我们可以使用这个类来处理图片的显示。<% Class 
  • 我今天晚上,做一个快印公司的网站布局,在Div镶套布局中,父标签DIV的高度不变。在IE下没有问题,但是在FIREFOX下就有问题了。如图:
  • 论坛里面有不少人在使用Javascript编写Asp,经常有人在论坛提问,为什么Asp对象在对比指定值时返回结果不对?现在在这里给大家写点关
  • 我们可以用鼠标把Dreamweaver的层在页面内拖动,但要全屏拖动就困难了,下面是一种实现的方法:制作步骤:一、准备图片,取名/file/
  • 1. 不要让用户先注册再去选商品。顾客们是来买东西的,不是来填表单的。所以需要确保用户在付款过程中完成了注册,而不是付款前就去注册,也不是让
  • A.动态页面第一步:创建转向控制页面,创建网站默认的首页文件(通常为"index.asp"或"default.
  • 代码如下:<% str = request("str") reg 
  • 本文总结了ASP初学者常犯的几个错误,希望对asp学习者有所帮助!1.记录集关闭之前再次打开:-----------------------
  • 一些大型站点都有着非常一流的视觉外观,它们很可能在设计时使用了网格系统。网格可以是页面布局显得紧凑而且稳定,为设计师在设计站点时提供一个逻辑
  • 沟通的时候,一般我不主动说自己是做用户体验设计,也不说做以用户为中心的设计,包括UED, UCD。这种专业名词传达的太虚,你也许是名用户体验
  • 去掉html中的table代码 Function OutTable(str) dim a,re&nb
  •  代码如下:--获取当前时间 Select getdate() --获取当前年月日 YY代表年,MM代表月,DD代表日,hh代表时
  • 下面是代码,如果看不懂,建议先把表格的一些<tr><td>的表格原理弄清楚了,就可以了代码如下:<table&
  • 平常我们只听说过ADO等一类ASP对象,但在ASP中还有个鲜为人知的专门SQL Server的ASP访问对象,它就是SQLOLE.SQLSe
  • 用FrontPage做网页的朋友们,你的主要页面中,可能都带有许多相同的元素吧?如页头横向排列(或左侧纵向排列)的主要链接按钮、页底的板权说
  • 因此为了节省服务器资源,应该尽可能关闭连接以释放连接所占有的资源,这种关闭记录集的连接而不关闭记录集的技术叫做断开记录集,这个记录集本身则称
  • 这些导航菜单来自于Dribbble网站,出自于世界各地的优秀设计师之手,涵盖了各种不同的风格,个个都非常精美。这里我将这些导航菜单展示出来,
  • 由于某些原因需要把函数直接放到 img 标签上的 onload 属性执行,比如:For some reasons we have to ex
  • 有时候我们可能不知道一个用户的密码,但是又需要以这个用户做一些操作,又不能去修改掉这个用户的密码,这个时候,就可以利用一些小窍门,来完成操作
手机版 网络编程 asp之家 www.aspxhome.com