`
lixiang
  • 浏览: 1797 次
  • 性别: 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

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

相关推荐

    Delphi2005 B/S程序设计技巧集(23--28)

    例如,数据库文件的读写操作、内存泄漏的避免、多线程同步问题的解决等。 5. **数据库文件**:数据库文件可能涉及到如何使用ADO(ActiveX Data Objects)或DBX(Database Express)等技术与数据库进行交互。开发者...

    B/S网站优化设计

    以上是针对【B/S网站优化设计】的一些关键技术和策略,涉及到的范围包括并发控制、数据库优化、前端性能提升、服务器性能调优以及问题排查等方面。这些技术和策略都是为了确保系统在高并发、高可用性、高性能和安全...

    headsnap分析内存泄漏的分析方法

    内存泄漏是程序运行过程中常见的问题,它会导致系统资源逐渐耗尽,影响程序的稳定性和性能。`Headsnap`是一个用于分析内存泄漏的工具,它能够帮助开发者定位和解决内存管理的问题。本篇文章将详细介绍如何使用`...

    JavaScript_内存泄露

    IE在早期版本中有一个著名的内存泄露问题,当DOM节点和JavaScript对象通过事件监听器或其他方式相互引用时,即使这些元素从DOM树中移除,由于循环引用的存在,它们的内存不会被释放。解决这个问题的方法是手动解除...

    c_c++中内存区域划分大总结

    ### C/C++中内存区域划分大总结 在C/C++编程语言中,了解不同内存区域的划分对于理解和管理程序中的内存至...通过对这些不同内存区域的理解,可以帮助我们更好地管理和优化程序中的内存使用,避免出现内存泄漏等问题。

    西门子能源管理软件B.Data系统说明安装及配置[汇编].pdf

    在安装B.Data系统时,首先要满足软件的系统需求,包括操作系统兼容性、内存、硬盘空间以及可能的特定网络设置。安装过程中,需按照以下步骤进行: 1. 安装Database Server,确保遵循安装指南中的步骤,同时注意避免...

    c#操作excel对象处理带有chart的报表源码

    最后,别忘了释放Excel资源,防止内存泄漏: ```csharp workbook.Close(); excelApp.Quit(); System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp); excelApp = null; ``` 在实际应用中,由于...

    linux c下多进程的例子

    请注意,为了防止资源泄露,通常需要在不再使用共享内存时,使用`shmctl()`函数删除它。在实际应用中,可能还需要考虑同步问题,如互斥锁(mutex)或信号量(semaphore),以防止多个进程同时访问共享内存造成数据不...

    零基础学JavaWeb开发

    Java语言的健壮性体现在其具备自动垃圾回收机制和内存管理功能,这大大减少了内存泄露和指针操作引发的问题。此外,Java支持多线程编程,允许开发者在单个程序中同时执行多个任务,这对于多任务处理和提高应用程序...

    内存布局问题

    在调试模式下,该函数会显示未释放的内存块信息,帮助开发者定位和修复内存泄露问题。 理解C语言的内存布局有助于编写更高效、更稳定的代码,避免因内存管理不当导致的问题。通过合理地利用栈、堆和全局区,以及...

    动态内存+BFS

    每完成一个测试用例后,会使用 `delete[]` 来释放之前分配的动态内存,确保没有内存泄漏。 #### 四、总结 综上所述,此程序巧妙地结合了动态内存管理和广度优先搜索算法,有效地解决了图论中的一个典型问题——...

    C语言内存分配问题[归类].pdf

    程序员需要确保在不再使用时正确释放堆内存,否则会造成内存泄漏。堆内存的分配和释放比较复杂,频繁的分配和释放可能导致内存碎片。 3. 全局区/静态区: 全局变量和静态变量存储在全局区,又分为全局初始化区和...

    C语言内存分配

    ### C语言内存分配详解 #### 一、内存分配机制概览 C语言作为一种低级语言,提供了对内存的直接访问能力。程序运行时使用的内存主要分为五...合理地管理内存不仅可以提高程序的性能,还能避免内存泄漏等问题的发生。

    STM32堆栈内存分析

    通过对STM32的堆栈内存进行深入分析,我们可以更好地理解其内存管理机制,并在实际开发过程中有效地避免内存相关问题的发生。掌握STM32的内存布局不仅有助于编写高效的程序,还能提高程序的稳定性和可靠性。

    基于asp.net实验室网上预约系统设计与实现.docx

    * 垃圾回收机制:C#具有垃圾回收机制,自动管理内存,减少内存泄露。 知识点三:B/S结构 B/S结构(Browser/Server)是一种常见的Web应用程序架构模式。在B/S结构中,客户端使用浏览器访问服务器,服务器提供数据和...

    操作系统(内存管理)

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

    C语言动态内存分配研究及应用.pdf

    在文档中也提供了一些参考文献,比如关于高校办公自动化系统的研究,基于B/S的Web数据库技术,MATLAB应用研究以及ASP网络编程技术等,这些都与动态内存分配的应用有着紧密联系,表明了动态内存分配在实际开发中的...

    网上导航系统B\S结构

    3. **垃圾回收**:自动管理内存,防止内存泄漏。 4. **异常处理**:提供异常处理机制,能够优雅地处理运行时错误。 5. **Lambda表达式和LINQ**:简化代码,提高开发效率,尤其在处理数据查询时。 在开发网上导航...

Global site tag (gtag.js) - Google Analytics