我有,我認爲,是一個相當平凡的位。 如果我運行得非常快,那麼情況會更加惡化,FireFox 4中的內存分配會不斷增加。我在Chrome中嘗試了這個,內存似乎保持穩定。在圖像之間切換時Javascript內存泄漏(FireFox4)
這是一個FF4問題還是我有我構建我的JavaScript很差?
注意沒有其他JS文件加載在頁面上。我在禁用所有插件的情況下以「安全模式」運行FF。沒有其他選項卡被加載。
<img id="heartbeat" name="heartbeat" src="/web/resources/graphics/greylight.png" />
<script type="text/javascript">
var hasTimedout = 1;
var lastPollTime = new Date();;
var maxDifference = 6000 * 2; //allows us to miss one poll of the data without showing anything bad
function heartbeat()
{
var curTime = new Date();
var diff = curTime.getTime() - lastPollTime.getTime();
if (diff > maxDifference && hasTimedout == 0)
{
document.getElementById('heartbeat').src = '/web/resources/graphics/greylight.png';
hasTimedout = 1;
}
else if (diff < maxDifference && hasTimedout == 1)
{
document.getElementById('heartbeat').src = '/web/resources/graphics/greenlight.png';
hasTimedout = 0;
}
toggle_visibility('heartbeat');
}
function toggle_visibility(id) {
var e = document.getElementById(id);
if (e.style.display == 'block')
e.style.display = 'none';
else
e.style.display = 'block';
}
setInterval("heartbeat()",20);
</script>
請不要將字符串傳遞給'setInterval'和'setTimeout' - 它是'eval'的僞裝:( – 2011-04-06 14:48:55
@Matt Ball意味着你的setInterval調用應該只是'setInterval(heartbeat,20);' – Pointy 2011-04-06 14:52:17
無限增長還是有時候會下降?可能只是FF和Chrome中的垃圾收集器的區別 – Emmerman 2011-04-06 14:53:23