`
lixiang
  • 浏览: 1757 次
  • 性别: Icon_minigender_1
  • 来自: 大连
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

B/S项目内存泄露的问题

阅读更多
最近开发一套B/S项目,需要使用DOM 创建无数次表格
现在使用的原理是先用数组把所有字符传垒加起来,然后用
getElementById("Desktop").innerHTML=temp.join("");

进行创建

工作流程是这样的 

首先 AJAX 提交 提交后返回JSON 数据  然后 根据数据 长度(length)
进行循环生成 HTML 代码
并使用数组垒加  以前用的 + 号 后面太慢了 改用数组
然后 使用   getElementById("Desktop").innerHTML=temp.join("");   进行显示

由于数据 不段有变化 所以没隔一段时间 需要重新加载 数据 (大概 20 秒一次)

重新加载一次数据  内存就曾加一次   10几M 的增加 

找了很久也没找到问题所在 听说 javaeye 高手多 所以发帖问下

下面有Drop 0.5  截图

[img]http://www.1717z.com/js.jpg [/img]
分享到:
评论
14 楼 lixiang 2008-07-25  
我想问下你们GRID 创建 时候使用的什么方式
是innerHTML吗?
13 楼 zuoming99 2008-04-03  
频繁更改DOM内容?Table?那就不要用字符串了,个人认为动态创建DOM对象更适合一些。
12 楼 fins 2008-04-02  
就因为内存泄露你就要换成flex? 这个成本太大了

从你的描述来看 应该可以解决的 因为你的页面并不复杂

建议, 不要这么做:
div.innerHTML=老内容
div.innerHTML=新内容

要在:
加入新内容前 显示的删除div下的老内容,例如
遍历div下的所有子结点, 移除其上面的事件,然后 removeNode(注意,这里建议用ext的那种做法),至于是否要深度移除,那就要看你的代码复杂度了




11 楼 laiseeme 2008-04-01  
innerhtml
在ie里面有问题 你就不能换别的方式dom么
10 楼 lixiang 2008-04-01  
无奈 到今天还是没解决以上问题,查了很多资料,做了很多测试,总结出来一个问题,在IE下 多次重复进行innerHTML 操作(注意每次写入参数不一样) 会导致内存严重泄露, 到今天也没解决问题,只有把内存严重泄露模块转为FLEX AJAX 说爱你不容易啊
9 楼 fins 2008-03-22  
楼主的图截取的时机不对啊
你看右边的滚动条 那么小 说明dom结点很多很多
而你截图中只是显示了其中一小部分 这一部分看起来似乎并不是有问题的部分
建议你 看看我的篇文章 自己确定一下是不是有孤立结点 循环引用 或者是内存泄露

通过你截取的图片 实在帮不上忙

我估计如果没有代码 QQ上交流也没什么意义啊 真的很难弄明白你的具体情况
我帮不上忙 不好意思啊
8 楼 apoclast 2008-03-22  
不过这类B/S每次会话时间都不长,造成问题一般不太严重,呵呵
7 楼 apoclast 2008-03-22  
同问这个问题
看这个地址
http://www.apoclast.org
我的博客在IE下有内存泄露,
在翻页时,会创建很多tr,这些tr在翻页后会全部撤除指向它们的指针,应该说资源是要释放的,不过还是每翻一页内存就加个1~3兆。
但是在FF,safari下面,翻页后会收回上一页增加的资源,难道是IE垃圾回收器的关系?
6 楼 我佛山人 2008-03-22  
可以参考一下mootools防止内在泄漏方面的处理
5 楼 afcn0 2008-03-20  
都是万恶的ie吧DOM JScript ActiveX互相分开,导致内存管理混乱,要弄好ie内存问题,估计要写本书。。。。书名就叫"IE内存特殊模型如何正确回收内存"
4 楼 lixiang 2008-03-20  
难道没办法了吗? 刚刚看了很多人写的这方面的例子都有泄露问题了

怎么些问题没人重视?
3 楼 lixiang 2008-03-20  
刚刚用您的软件测试图
2 楼 lixiang 2008-03-20  
fins  首先谢谢您的回复
      
        我冒昧的问下您能把您的QQ 或者联系方式发出来吗?

       因为具体情况我真的解释不清楚, 而且我这个项目比较庞大 发代码我都不知道从何发起

 
1 楼 fins 2008-03-20  
建议用 drop的增强版软件 sIEve 测试

在IE下监控页面内存资源和dom节点(sIEve软件使用简介)
http://fins.iteye.com/blog/172891

然后再截图
同时 把代码弄上来 或者详细说明一下页面中的机制
否则很难帮上你

相关推荐

    内存管理内存管理内存管理

    内存管理内幕 dragonimp's blog coder.developer.[designer].ArchitecturE.manager.^_^... posts - 29, comments - 121, trackbacks - 27 My Links Home Contact Login News !!! Article ...

    操作系统(内存管理)

    文中将为您提供如何管理内存的细节,然后将进一步展示如何手工管理内存,如何使用引用计数或者内存池来半手工地管理内存,以及如何使用垃圾收集自动管理内存。 为什么必须管理内存 内存管理是计算机编程最为基本的...

    详谈JavaScript内存泄漏

    1、什么是闭包、以及闭包所涉及的作用域链这里就不说了。 2、JavaScript垃圾回收机制  JavaScript不需要手动地释放内存,它使用一种... AàBàC :A的某一属性引用着B,同样C也被B的属性引用着。如果将A清除,那么B

    基于HPSOCKET的C/S软件开发框架,功能全面,例程完善···-易语言

    相信很多人都喜欢用内存搞缓存池,但是搞的多了,回收再不及时的话,容易造成内存泄露。所以,这个缓存池采用临时文件读写方式进行操作,效率虽说逊色内存操作,但是其他方面的优越性是内存缓存池无法比拟的!比如在...

    超级有影响力霸气的Java面试题大全文档

     GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收...

    c++ 面试题 总结

    没有释放p的空间,造成内存泄漏。 -------------------------------------------------------------------------- 8.下面的代码有什么问题?并请给出正确的写法。 void DoSomeThing(char* p) { char str[16]; ...

    最新名企标准通用C++面试题,

    (2)内存泄漏 void Test(void) { char *str = (char *) malloc(100); strcpy(str, “hello”); free(str); if(str != NULL) { strcpy(str, “world”); printf(str); } } 请问运行Test函数会有什么样...

    java 面试题 总结

     GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收...

    华为编程开发规范与案例

    在香港项目测试中,发现ISDN话机拨新业务号码时,若一位一位的拨至18位,不会有问题。但若先拨完号码再成组发送,会导致MPU死机。 处理过程: 查错过程很简单,按呼叫处理的过程检查代码,发现某一处的判断有误...

    软件测试经典面试题 (超实用)

    1、描述软件产生内存泄露的原因以及检查方式。(可以结合一种开发语言进行描述) 28 2、简述什么是值传递,什么是地址传递,两者区别是什么? 28 3、结构化程序设计和面向对象程序设计各自的特点及优缺点是什么? 28...

    Flex企业应用开发实战源代码

    1.1 B/S企业应用开发者的噩梦 1 1.2 噩梦结束,新时代来临 2 1.3 Flex概述 6 1.4 Flash Player的工作模型 7 1.4.1 Flash Player的帧执行模型 7 1.4.2 Flash Player渲染模型 9 1.4.3 Flash中的事件机制 12 1.5...

    源漏损耗对65nm节点NOR闪存耐久性的影响

    在65纳米节点浮栅NOR闪存的12英寸... 在B型设备中,在编程/擦除循环之后,内存窗口关闭更为严重,并且结电流的产生也大大降低了结泄漏。 在S和D区域有很多散装陷阱。 建议将新设备中的损坏归因于等离子刻蚀Craft.io。

    virboxprotector_2.0版免费试用版-支持APK加固

    iOS 应用加固并没有采用 B/S 模式,而是提供了标准化的本地客户端工具。 开发者接入后,无需上传应用,所有的加固操作,都在开发者的本地完成,加固过程中不会泄露应用及隐私信息,更加安全可靠。 高性价比 传统...

    精易模块[源码] V5.15

    8、修正“编码_Utf8到Unicode”频繁操作导致内存泄漏的BUG,感谢易友【◆野蛮vE儿】反馈。 9、修正“目录_是否存在”,当存在无反缀文件时返回真的BUG,感谢易友【@飞灵】反馈。 10、新增“系统_信息框Ex”定时信息...

    一些C面试题,希望能对大家有帮助

    // 使用完,应当释放空间,以免造成内存汇泄露 return 0; } 方法2: #include #include main() { char str[]="hello,world"; int len=strlen(str); char t; for(int i=0; i<len/2; i++) { t=str[i]; str[i]=str...

    X-Scan

    X-Scan-v3.1 使用说明 ... 常见问题解答: <br> Q:如果没有安装WinPCap驱动程序是否能正常使用X-Scan进行扫描? A:如果系统未安装WinPCap驱动,X-Scan启动后会自动安装WinPCap 2.3;如果系统已经安装了...

    阐述大型数据库系统安全风险及策略.docx

    数据、网络透明,支撑B/S体系和混合的体系组成结构;实现了两阶段提交、多线索查询手段。(2)SYBASE 10:完全的客户机/服务器体系结构,能为数百用户提供高性能需求;采用单进程多线索技术进行查询,节省系统开销,...

    X-Scan v3.1

    常见问题解答: Q:如果没有安装WinPCap驱动程序是否能正常使用X-Scan进行扫描? A:如果系统未安装WinPCap驱动,X-Scan启动后会自动安装WinPCap 2.3;如果系统已经安装了WinPCap更高版本,X-Scan则使用已有版本...

    黄淮学院\考试题\2010-2011

    是一种对传统口令传递的一种有效改进,该方法的基本形式是验证者提出问题,由证明者回答问题。 得分 评卷人 四、综合分析题(每题10分,共40分) 试用数学符号描述加密系统,并说明各符号之间的关系。 ...

    千方百计笔试题大全

    31、java 中会存在内存泄漏吗,请简单描述。 11 32、abstract 的method 是否可同时是static,是否可同时是native,是否可同时是synchronized? 11 33、静态变量和实例变量的区别? 11 34、是否可以从一个static 方法...

Global site tag (gtag.js) - Google Analytics