问题描述
- 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);
});}
解决方案
内存增长原因是哪个变量引起的没法替你分析,但你这释放myChart1的内存方式是有问题的。
myChart1 = null;
//清理内存
CollectGarbage();
这段代码清理内存是无效的。myChart1=null只能说myChart1失效,但不释放内存,在refreshPage没执行完之前myChart1还在refreshPage的上下文中,这时候CollectGarbage是没用的,需要执行完才能清理,比如
setTimeout(CollectGarbage, 1);
CollectGarbage只会在IE中生效
时间: 2025-01-19 13:07:57