Mise à jour 2015
En 2012, cela n'était pas possible si vous vouliez prendre en charge tous les principaux navigateurs en cours d'utilisation. Malheureusement, pour le moment, il s'agit toujours d'une fonctionnalité uniquement Chrome (une extension non standard de window.performance
).
window.performance.memory
Prise en charge du navigateur: Chrome 6+
Réponse 2012
Existe-t-il un moyen de savoir combien de mémoire est utilisée par une page Web ou par mon application jquery? Je recherche une solution d'exécution (pas seulement des outils de développement), afin que mon application puisse déterminer les actions en fonction de l'utilisation de la mémoire dans le navigateur d'un utilisateur.
La réponse simple mais correcte est non . Tous les navigateurs ne vous exposent pas ces données. Et je pense que vous devriez abandonner l'idée simplement parce que la complexité et l'inexactitude d'une solution «artisanale» peuvent introduire plus de problèmes qu'elle n'en résout.
Le comptage des éléments DOM ou de la taille du document peut être une bonne estimation, mais cela pourrait être assez inexact car il n'inclurait pas la liaison d'événement, les données (), les plugins et autres structures de données en mémoire.
Si vous voulez vraiment vous en tenir à votre idée, vous devez séparer le contenu fixe et dynamique.
Le contenu fixe ne dépend pas des actions de l'utilisateur (mémoire utilisée par les fichiers de script, les plugins, etc.)
Tout le reste est considéré comme dynamique et devrait être votre objectif principal lors de la détermination de votre limite.
Mais il n'y a pas de moyen facile de les résumer. Vous pouvez mettre en place un système de suivi qui rassemble toutes ces informations. Toutes les opérations doivent appeler les méthodes de suivi appropriées. par exemple:
jQuery.data
Méthode d' enveloppement ou d'écrasement pour informer le suivi système de de vos allocations de données.
Enveloppez les manipulations html afin que l'ajout ou la suppression de contenu soit également suivi ( innerHTML.length
c'est la meilleure estimation).
Si vous conservez de gros objets en mémoire, ils doivent également être surveillés.
En ce qui concerne la liaison d'événements, vous devez utiliser la délégation d'événements et cela pourrait également être considéré comme un facteur quelque peu fixe.
Un autre aspect qui rend difficile l'estimation correcte de vos besoins en mémoire est que différents navigateurs peuvent allouer de la mémoire différemment (pour les objets Javascript et les éléments DOM).