jQuery MiniUI

 找回密码
 立即注册
查看: 3027|回复: 3
打印 上一主题 下一主题

datagrid控件占用内存问题 [复制链接]

Rank: 2

跳转到指定楼层
楼主
发表于 2013-4-22 11:04:16 |只看该作者 |倒序浏览
本帖最后由 xich8896 于 2013-4-22 11:05 编辑

  网页中用定时器每隔3秒钟调用一次reload()方法,以达到实时自动刷新页面的目的,每次返回50行数据,在firefox,chrome中CUP点用4~8%,内存占用基本不变,性能不错。但在IE(6,7,8)中,CUP占用稍高(20%~35%),最严重的问题是内存占用,从最初的50M左右一直涨到1300M左右,只用了2个多小时,最终页面崩溃。

function pTimer() {
            setTimeout("pTimer()", 3000);
            grid.reload();//IE中内存一直在涨
}

以前做过类似功能,采用的做法是在服务器端直接生成内容"table"代码(不生成json格式数据),然后在前端采用ajax每隔3秒得到一次服务器端生成的"table"代码,并显示。
function pTimer() {
            setTimeout("pTimer()", 3000);
            $("#前端容器").load(tUrl);//服务器端生成"table"代码
}
这样的好处是不用在浏览器端分析json数据再生成"table"代码,大大降低前端的工作量,性能很棒。实时显示(每3秒自动刷新一次)1000行数据(没有采用动态加载和分页),IE浏览器CUP只有3~7%左右,内存无增长。这种方式已开发的软件已安装近千用户,没有在性能方面提出异议。


Rank: 9Rank: 9Rank: 9

沙发
发表于 2013-4-22 11:28:29 |只看该作者
明白了,我们处理下~

Rank: 9Rank: 9Rank: 9

板凳
发表于 2013-4-23 10:30:10 |只看该作者
我们仔细测试了下:
1.每次刷新后,只有几十k的内存增长量,而这个是JS对象创建和销毁时带来的一些开销,几乎无法避免。
2.其次,建议你在定时刷新表格这个业务场景,还是自己拼接table实现,最轻量最经济。
因为datagrid控件有大量功能和内部细节,一次销毁创建只增长几十k,已经是非常优化了,几乎无法再提升了,而且提升的意义也不是很大。

Rank: 2

地板
发表于 2013-4-24 10:38:37 |只看该作者
niko 发表于 2013-4-23 10:30
我们仔细测试了下:
1.每次刷新后,只有几十k的内存增长量,而这个是JS对象创建和销毁时带来的一些开销,几 ...

经过几天测试,性能上比其它控件好很多,用于日常的报表展示没有任何问题,要是能用在实时监控领域那就太帅了。目前还没找到能实时刷新的控件。
能否把grid的内容部分开放一个接口,允许用户自已生成"table"代码来填充?

Archiver|普加软件

GMT+8, 2024-11-27 17:47 , Processed in 1.038290 second(s), 9 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部