我的系统在前台部分大量的使用extjs和js,有时候打开系统就直接报这个错误,有时候使用一段时间后才报这个错误,根据用户的使用统计,一天大概要报7、8次这样子,用户那边挺不爽的现在。我的问题是:IE的这个错误一般是由于什么样的原因引起的?有可能是前台大量的js导致的吗(js的使用不当导致内存泄露,报这个错误)?
我的系统在前台部分大量的使用extjs和js,有时候打开系统就直接报这个错误,有时候使用一段时间后才报这个错误,根据用户的使用统计,一天大概要报7、8次这样子,用户那边挺不爽的现在。我的问题是:IE的这个错误一般是由于什么样的原因引起的?有可能是前台大量的js导致的吗(js的使用不当导致内存泄露,报这个错误)?
建议给iE做个方法,内存回收,句柄回收,无用对象回收等
貌似没有问题啊,莫非是我在服务器PHP将session 和cookie一起用的缘故?var cookie=new function(){
this.get=function(cN) {
var c_V = '';
var ck = document.cookie;
var p_N = ck.indexOf(escape(cN) + '=');
if (p_N != -1)
{
var p_V = p_N + (escape(cN) + '=').length;
var e_P = ck.indexOf(';', p_V);
if (e_P != -1)
c_V = unescape(ck.substring(p_V, e_P));
else
c_V = unescape(ck.substring(p_V));
}
return (c_V);
};
this.set=function(cN, c_V, expires, path, domain, secure){
var date=new Date();
var ltime = date.getVarDate
expires=new Date();
expires.setYear(expires.getYear()+4)
document.cookie =
escape(cN) + '=' + escape(c_V)
+ (expires ? '; expires=' + expires.toGMTString() : '')
+ ('; path=/')
+ (domain ? '; domain=' + domain : '')
+ (secure ? '; secure' : '');
};
this.clear=function(){};
this.reset=function(){};
};
这种情况多见于vista系统下的IE7和IE8,且通常IE7比IE8出现的可能性要更大,之前我经常遇到
不过现在我用win7的IE8就再没出现过这种问题,以前用win xp下的IE6/IE7/IE8页没遇到过这种问题,
同样的页面在不同的操作系统中是不一样的待遇,劝客户换操作系统吧
不理解?给IE做方法?现在我们的系统的确是有内存泄露的问题,但是不明白的就是,我已经获得所有新建对象的引用,并且用removeNode(或removeChild)方法释放掉了,但是好像只是从页面中移除了,并没有从内存中释放。
IE在内存回收方面需要方法并不像FF那样自动回收.
再者,removeNode是可以将结点从dom中移除,但结点中的句柄却还是在关联,即观察状态,他们也存在于内存中.<div onclick='function(){alert(123);}'></div>
你将div删掉,即使是内存中不存在这个div 但和这个div相关联的onclick句柄也还是存在的.应该onclick=null;
下面有两方法
删除句柄以及字节点句柄
var purge= function (d) { var a = d.attributes, i, l, n; if (a) { l = a.length;for (i = 0; i < l; i += 1) {n = a[i].name;if (typeof d[n] === 'function') {d[n] = null;} }}a = d.childNodes;if (a) {l = a.length;for (i = 0; i < l; i += 1) { purge(d.childNodes[i]);}}};内存回收(IE)
function gc(){CollectGarbage();}
复杂的JS调用可能导致问题的产生,建议咨询一下微软.