Возможный дубликат:
Что лучший способ состоит в том, чтобы представить выполнение JavaScript?У меня есть несколько сценариев, которые используют jQuery, и я думаю, что у меня есть утечка памяти в одном из них.
Как можно было представить и найти, какие части сценариев, что у меня есть действительно ли использование, являются большей частью памяти/ЦП?
, касающиеся расхода памяти
Утечки памяти в JavaScript, как правило, игнорируются, за исключением случаев, когда они превращаются в утечки памяти браузера (то есть Даже после того, как пользователь перемещается вдали от страницы, память продолжается выделена, и нет способа освободить его). Причина этого в том, что в то время как ваше веб-приложение может иметь некоторые утечки памяти, пользователи будут переходить с одной страницы в другую, чтобы утечки были минимизированы. Однако они не могут перезапустить браузер, поэтому утечки памяти браузера могут быть серьезными. Известно, что какой-то код JavaScript вызывает утечки памяти на определенные браузеры, являющиеся Internet Explorer, вероятно, худшее в этой области. Для этого вы можете найти Microsoft JavaScript Devector Memory Devector , чтобы быть очень полезным.
Что касается времени
, то есть Chrome и Safari построили профилировщики в инструментах веб-разработки, которые отправляют в браузер. Для Firefox вы можете использовать Firebug. Также полезно может быть, поскольку вы используете jQuery, что означает, что ваш отчет о профилировании будет заполнен анонимными функциями и одинаковыми, что делает его довольно нечитаемым, Plugin jQuery Profific , который даст вам более четкий вывод причина.
Use Firebug. Чтобы процитировать http://getfirebug.com/js.html:
Чтобы использовать профилировщик, просто перейдите на вкладку Console и нажмите кнопку "Profile" (Профиль). Затем немного используйте ваше приложение или перезагрузите страницу и нажмите кнопку "Профиль" еще раз. После этого вы увидите подробный отчет, показывающий, какие функции были вызваны и сколько времени заняла каждая из них.
Я бы посоветовал взглянуть на профилировщик в Firebug, а также на плагин Drip для IE, чтобы помочь в поиске утечек памяти.
Кроме того, имейте в виду, что большинство утечек памяти javascript происходит из-за круговых ссылок между объектами DOM и объектами javascript, которые не ломаются, когда DOM-объект выгружается. Чтобы предотвратить это, я бы предложил избегать создания ссылок на javascript-объекты в свойствах DOM-объекта (т.е. избегать чего-то вроде document.getElementById('foo').bar = myObject;
). Если вы должны создать эти круговые ссылки, убедитесь, что вы сами их нарушили в функции, которая запускается при выгрузке страницы, или при удалении DOM-объектов перед выгрузкой.
Другой простой способ проверить определенный фрагмент кода - добавить вокруг него таймер.
var testStart = new Date();
// code to be tested here
$('#jstest').html("selected function: "+ (new Date() - testStart) + " milliseconds");
Где jstest - элемент диапазона, видимый где-то на вашей странице.
-121--1456246-Нет, это необходимо сделать в коде. Смотрите этот вопрос.
-121--2568323-Google Chrome также имеет параметры профиля
Этот пост от John Resig (jQuery) может быть полезен для обнаружения утечек памяти в IE:
Другой простой способ проверки конкретного фрагмента кода - добавить вокруг него таймер.
var testStart = new Date();
// code to be tested here
$('#jstest').html("selected function: "+ (new Date() - testStart) + " milliseconds");
Где jstest - это элемент span, видимый где-то на вашей странице.
Ускорение страницы FireBug или Google для Firefox имеют профилирование.