При запуске следующего скрипта в Safari и Firefox 5 (другие браузеры не тестировались) использование памяти обоими браузерами резко возрастает. Но после завершения функции использование памяти все еще остается очень высоким. Использование памяти Safaris увеличивается на ~ 80 МБ, FF до 200 МБ.
Есть мысли, почему даже через несколько минут использование памяти не уменьшается?
<!DOCTYPE html>
<html>
<head>
<title></title>
<script type="text/javascript">
window.onhashchange = function() {
var i = 1; // do something
};
function leakIt() {
for(var i = 0; i < 10000; i++) {
window.location.hash = i%4; // Trigger onhashchange
}
};
window.onload = function() {
document.getElementById('leak').addEventListener('click', leakIt,false);
};
</script>
</head>
<body>
<button id="leak">Leak it!</button>
</body>
</html>
Дополнительная информация
Если я перезагружаю страницу в Safari и снова вызываю функцию leakIt
, объем памяти увеличивается примерно на 20 МБ, а после завершения leakIt
использование памяти возвращается к объему после первого вызова leakIt
.