caillc 2015-03-06 06:00 采纳率: 0%
浏览 1723

IE6中使用setInterval定期刷新Fusioncharts导致IE内存持续升高不能释放

贴出代码:
var myChart1 = null;
//分税种
var fsz = function() {
result = ajax_comm("com.digitalchina.jkpt.web.WelcomeWebService","queryFsz",{date:yearMonth});
//alert(result.xml)
myChart1 = new FusionCharts("/adp/work/jkpt/comm/FusionCharts/swf/Pie3D.swf?ChartNoDataText=没有查询到数据", "fsz_t1_img", "338", "198");
myChart1.setDataXML(result.xml);
myChart1.render("fsz_t1");
}

var refreshPage = function() {
myChart1.dispose();
myChart1 = null;
//清理内存
CollectGarbage();
fsz();

$(function() {
refreshPage();
setInterval("refreshPage()", 30000);
});

}
  • 写回答

1条回答 默认 最新

  • danielinbiti 2015-03-06 07:57
    关注

    内存增长原因是哪个变量引起的没法替你分析,但你这释放myChart1的内存方式是有问题的。

     myChart1 = null;
    //清理内存
    CollectGarbage();
    

    这段代码清理内存是无效的。myChart1=null只能说myChart1失效,但不释放内存,在refreshPage没执行完之前myChart1还在refreshPage的上下文中,这时候CollectGarbage是没用的,需要执行完才能清理,比如

     setTimeout(CollectGarbage, 1);
    

    CollectGarbage只会在IE中生效

    评论

报告相同问题?

悬赏问题

  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制
  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊
  • ¥15 安装svn网络有问题怎么办