关于ie的内存泄漏与javascript内存释放
最近做一个公司的业务系统,公司要求能尽可能的与c/s近似,也就是如c/s一样,点击文本框可以弹出此项目的相关内容,进行选择输入。
我使用了弹出窗口,然后在子窗口双击选中项目,把选中的值返回给父窗体。
在系统做完了之后,在客户使用的过程,由于客户使用的是512m的内存配置,所以在打开了30--40个窗体之后,ie的虚拟内存占用量达到近200m,从而使系统变慢,javascript的运行也变慢了。
在google搜了一下之后,才知道可能是由于ie的内存泄漏引起的。具体可以参看www.cnblogs.com中的相关文章。
我使用任务管理器,打开一个弹出窗口,ie内存就增加1-3m,然后关闭窗口,有时内存并不释放,有时才释放几十k。看来问题出在了内存释放上面。
接着按内存释放这个思路,进行搜索查找方法,来进行解决这个问题。我找到一个javascript未公开的函数CollectGarbage,这个函数是用来进行内存释放的。我在所有的弹出窗口结束之前把所有的自己定义的javasctip的变量设置为null,并调用CollectGarbage函数。
javascript中把变量设为null,javascript并不会把内存释放,当下次再次定义变量时,就会覆盖此变量所在的内存。如果不设为null,javascript再次定义变量时,会开辟一个新的内存空间。
在使用以上处理之后,再次打开窗口,ie的内存每次还是增加1-3m,但是在关闭窗口之后,则ie会释放一定数量的内存在500k至2m。起到了一定的作用。
由于我在页面中使用了第三方的控件,第三方的控件中的javascript中的内存是如何管理,就不是由我来控制的了。
1.javascript内存释放的方法示例
把所有上级函数的参数即使设为null,并使用CollectGarbage来释放内存。
示例
<script>
//32M
function AllocMem()
{
var str="12345678";
for(var i=3;i<24;i++)
str+=str;
return str;
&
相关文档:
取前面两种的优点:
a、用构造函数来定义类属性(字段)
b、用原型方式来定义类的方法。
就有了第三种方式。这种方式貌似采用的人较多。
3、综合构造函数/原型
/**
* Person类:定义一个人,有个属性name,和一个getName方法
* @param {String} name
*/
function Person(name) {
this.name = name;
}
Pers ......
通过前面几篇得知javascript写类无非基于构造函数
和原型
。既然这样,我们写个工具函数来写类。
/**
* $class 写类工具函数之一
* @param {Object} constructor
* @param {Object} prototype
*/
function $class(constructor,prototype) {
var c = constructor || function(){};
var p = prototype || {}; ......
Introduction
This article is about passing data between VB.NET/C# WinForms and JavaScript.
Before reading further, let me warn you that this article is not about ASP.NET. Concepts covered in the article are applied to Desktop applications.
Background
I was working on a project which required dat ......
在Web上显示图片,通常都会有图片显示比例问题,如果不给<img />限制width和height,那么如果图片大了就会将整个页面挤乱,图片小了又会使图片失真。
我的需求如下:
1、预先定义好图片显示的标准宽度和高度。
&nb ......
看到一篇入门的JS继承文章,转载下
原地址:http://sdcyst.javaeye.com/blog/288813
类变量/类方法/实例变量/实例方法
先补充一下以前写过的方法:
在javascript中,所有的方法都有一个call方法和apply方法.这两个方法可以模拟对象调用方法.它的第一个参数是对象,后面的
参数表示对象调用这个方法时的参数(ECMAScript spec ......