易截截图软件、单文件、免安装、纯绿色、仅160KB

关于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;  
&


相关文档:

javascript写类方式之二

2、原型方式
/**
* Person类:定义一个人,有个属性name,和一个getName方法
*/
function Person(){}
Person.prototype.name = "jack";
Person.prototype.getName = function() { return this.name;}

把类的属性(字段),方法都挂在prototype上。
造几个对象测试下:
var p1 = new Person();
var ......

VC++访问javascript的系列文章

有些网友经常询问:在VC++中如何访问javascript中的对象、函数、变量等元素?
这里把以前发表的一系列文章集中在一起,方便查阅。
vc++访问javascript(1)--window在脚本引擎中的作用 
http://blog.csdn.net/pimshell/archive/2008/08/02/2758863.aspx
vc++访问javascript(2)--IDispatchEx是动态脚本语言的基础&nb ......

VB.NET/C# and JavaScript communication

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 ......

JavaScript 备忘录

 
function
getVerificationCode()//取得验证码
{
  
    
var
para =
new
Array(
"1"
,
"2"
,
"3"
,
"4"
,
"5"
,
"6"
,
"7"
,
"8"
,
"9"
,
 &nbs ......

Javascript 按键事件


AS("#...").keypress(function(event) {
        if (navigator.userAgent.toLowerCase().indexOf("mozilla") >= 0) {
         var $key = event.charCode ;
        } else {
         var $key = event. ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号