我有一个图像旋转器,为新幻灯片创建一个div,隐藏当前幻灯片,显示新的div,并删除隐藏的div。 所有这一切都是与jQuery做,我使用此代码删除我不再需要的幻灯片:清除浏览器中的内存
var last = $("#item_" + lastSlide + "_" + idSuffix);
last.empty();
last.remove();
last = null;
的内存每张幻灯片之后还在不断增加。 关于如何有效地清除内存的任何ideeas?
我有一个图像旋转器,为新幻灯片创建一个div,隐藏当前幻灯片,显示新的div,并删除隐藏的div。 所有这一切都是与jQuery做,我使用此代码删除我不再需要的幻灯片:清除浏览器中的内存
var last = $("#item_" + lastSlide + "_" + idSuffix);
last.empty();
last.remove();
last = null;
的内存每张幻灯片之后还在不断增加。 关于如何有效地清除内存的任何ideeas?
我想出的最好的解决方案是清除html内容,然后删除元素。
例如:
myDiv.html("");
myDiv.remove();
对不同的幻灯片使用不同的元素并不明智。您应该使用两个元素进行淡入淡出幻灯片。这是我前段时间写的代码:
el = function(q) {return document.getElementById(q)};
var slides=["logo.jpg","avond.jpg","bar.jpg","buitencloseup.jpg","servet.jpg","spelcomputers.jpg","tafelaanbar.jpg","tafelsbuiten.jpg"],
Math.floor(Math.random()*slides.length),
highimg=el("highimg"),
lowimg=el("lowimg"),
fade,
changeslide=function() {
lowimg.style.backgroundImage=highimg.style.backgroundImage
highimg.style.backgroundImage="url(img/slideshow/"+(slides[++_src]||slides[_src=0])+")"
var time=highimg.style.opacity=0;
highimg.style.filter="alpha(opacity=0)"
if (fade)
clearInterval(fade)
fade=setInterval(function(){
if(highimg.style.opacity<1)
highimg.style.filter="alpha(opacity="+(highimg.style.opacity=time+=1/40)*100+")"
else
{
highimg.style.filter="alpha(opacity=100)";
highimg.style.opacity=1
clearInterval(fade);
}
},25)
}
interval=setInterval(changeslide,10000)
highimg.onclick = changeslide
changeslide()
这是不太可能在您发布的代码中发生内存泄漏;它更可能是在旋转或其他地方。在JavaScript中你没有控制内存的 –
。最好的方法是围绕此编写更高效的代码。显示您的代码,了解如何创建幻灯片,也许我们可以帮助您改进它 – Ibu
垃圾收集进程无法从内存中删除任何内容,直到删除所有对引用的引用为止。这已经写了很多:http://stackoverflow.com/questions/864516/what-is-javascript-garbage-collection,http://stackoverflow.com/questions/774357/garbage-collection – Jasper