Обновление 2015 года
В 2012 году это было невозможно, если вы хотели поддерживать все основные используемые браузеры. К сожалению, сейчас это все еще функция Chrome (нестандартное расширение window.performance
).
window.performance.memory
Поддержка браузера: Chrome 6 +
2012 Ответ
Есть ли способ узнать, сколько памяти используется веб-страницей или моим приложением jquery? Я ищу решение времени выполнения (а не только инструменты разработчика), чтобы мое приложение могло определять действия на основе использования памяти в браузере пользователя.
Простой, но правильный ответ: нет . Не все браузеры предоставляют вам такие данные. И я думаю, что вы должны отказаться от этой идеи просто потому, что сложность и неточность решения "handmade" могут создать больше проблем, чем решить.
Подсчет элементов DOM или размера документа может быть хорошей оценкой, но он может быть весьма неточным, поскольку он не будет включать привязку событий, data (), плагины и другие структуры данных в памяти.
Если вы действительно хотите придерживаться своей идеи, вам следует разделить фиксированный и динамический контент.
Фиксированное содержимое не зависит от действий пользователя (память, используемая файлами сценариев, плагинами и т. Д.)
Все остальное считается динамичным и должно быть вашим основным фокусом при определении вашего лимита.
Но нет простого способа суммировать их. Вы могли бы внедрить систему tracking , которая собирает всю эту информацию. Все операции должны вызывать соответствующие методы отслеживания. например:
Обертывание или перезапись jQuery.data
метод информирования системы tracking о ваших распределениях данных.
Оберните html-манипуляции так, чтобы добавление или удаление контента также отслеживалось (innerHTML.length
- лучшая оценка).
Если вы храните большие объекты в памяти, их также следует отслеживать.
Что касается привязки событий, вы должны использовать делегирование событий , и тогда это также можно считать несколько фиксированным фактором.
Еще один аспект, который затрудняет правильную оценку ваших требований к памяти, заключается в том, что разные браузеры могут распределять память по-разному (для объектов Javascript и элементов DOM).