Оновлення за 2015 рік
Ще в 2012 році це було неможливо, якщо ви хотіли підтримати всі основні браузери, що використовуються. На жаль, зараз це все ще лише функція Chrome (нестандартне розширення window.performance).
window.performance.memory
Підтримка браузера: Chrome 6+
Відповідь 2012 року
Чи є спосіб дізнатись, скільки пам'яті використовується веб-сторінкою або моєю програмою jquery? Я шукаю рішення для виконання (не лише інструменти розробника), щоб мій додаток міг визначати дії на основі використання пам'яті в браузері користувача.
Проста, але правильна відповідь - ні . Не всі браузери надають вам такі дані. І я думаю, що вам слід відмовитись від цієї ідеї просто тому, що складність та неточність рішення, створеного вручну, може створити більше проблем, ніж вирішує.
Підрахунок елементів DOM або розмір документа може бути гарною оцінкою, але він може бути досить неточним, оскільки не включатиме прив'язку подій, дані (), плагіни та інші структури даних в пам'яті.
Якщо ви дійсно хочете дотримуватися своєї ідеї, вам слід розділити фіксований та динамічний вміст.
Виправлений вміст не залежить від дій користувача (пам’ять, яку використовують файли сценаріїв, плагіни тощо).
Все інше вважається динамічним і має бути вашим основним акцентом при визначенні ліміту.
Але немає простого способу їх узагальнити. Ви можете застосувати систему відстеження, яка збирає всю цю інформацію. Усі операції повинні викликати відповідні методи відстеження. наприклад:
jQuery.dataМетод обтікання або перезапису, щоб повідомити систему відстеження про ваші розподіли даних.
Оберніть маніпуляції з HTML так, щоб додавання або видалення вмісту також відстежувалось ( innerHTML.lengthце найкраща оцінка).
Якщо ви зберігаєте великі об'єкти в пам'яті, за ними слід також стежити.
Що стосується прив'язки подій, ви повинні використовувати делегування подій, і тоді це також можна вважати дещо фіксованим фактором.
Ще одним аспектом, який ускладнює правильну оцінку потреб у вашій пам’яті, є те, що різні браузери можуть розподіляти пам’ять по-різному (для об’єктів Javascript та елементів DOM).