100 votes

jQuery ou javascript pour rechercher l'utilisation de la mémoire par la page

Est-il un moyen de savoir de combien de mémoire est utilisée par une page web, ou par mon jquery application?

Voici ma situation:

Je suis en train de construire un data lourd webapp à l'aide de jquery frontend et une bonne backend qui sert de données en JSON. La page est chargée qu'une seule fois, et ensuite, tout se passe via ajax.

L'INTERFACE utilisateur permet aux utilisateurs de créer plusieurs onglets dans l'INTERFACE utilisateur, et chaque onglet peut contenir beaucoup de données. J'envisage de limiter le nombre d'onglets qu'ils peuvent créer, mais la réflexion qu'il serait agréable pour seule limite d'une fois l'utilisation de la mémoire a disparu au-dessus d'un certain seuil.

Sur la base des réponses, j'aimerais faire quelques clarfications:

  • Je suis à la recherche d'une solution d'exécution (et pas seulement des outils de développement), de sorte que mon application peut déterminer les actions basées sur l'utilisation de la mémoire dans le navigateur d'un utilisateur.
  • Le comptage des éléments du DOM ou de la taille du document pourrait être une bonne estimation, mais il pourrait être tout à fait inexact, car il ne serait pas inclure la liaison des événements, des données(), les plugins, et d'autres structures de données en mémoire.

68voto

galambalazs Points 24393

Est-il un moyen de savoir de combien de mémoire est utilisée par une page web, ou par mon jquery application? Je suis à la recherche d'une solution d'exécution (et pas seulement des outils de développement), de sorte que mon application peut déterminer les actions basées sur l'utilisation de la mémoire dans le navigateur d'un utilisateur.

Le simple mais la réponse est non. Le navigateur ne peut pas exposer ces données pour vous. Et je pense que vous devriez abandonner l'idée tout simplement parce que la complexité et de l'inexactitude de l'une "à la main" solution peut apporter plus de problème qu'elle n'en résout.

Le comptage des éléments du DOM ou de la taille du document pourrait être une bonne estimation, mais il pourrait être tout à fait inexact, car il ne serait pas inclure la liaison des événements, des données(), les plugins, et d'autres structures de données en mémoire.

Si vraiment vous voulez coller avec votre idée, vous devez séparer fixe et du contenu dynamique.

Fixe le contenu n'est pas la personne à charge sur les actions de l'utilisateur (mémoire utilisée par les fichiers de script, 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'est pas facile à résumer. Vous pourriez mettre en œuvre un suivi de système qui permet de recueillir toutes ces informations. Toutes les opérations doivent appeler les méthodes de suivi. e.g:

Wrap ou écraser jQuery.data méthode d'informer le suivi du système à propos de vos allocations de données.

Envelopper html manipulations de sorte que l'ajout ou la suppression du contenu est également l'objet d'un suivi (innerHTML.length correspond à la meilleure estimation).

Si vous garder les gros objets en mémoire, ils doivent également être surveillés.

Comme pour le cas de la liaison, vous devriez utiliser l' événement délégation et il peut aussi être considéré comme un peu le facteur fixe.

Un autre aspect qui rend difficile l'estimation de vos besoins en mémoire correctement, c'est que les différents navigateurs peut allouer de la mémoire différemment (pour les objets Javascript et DOM éléments).

40voto

Sindre Sorhus Points 20538

Vous pouvez utiliser le temps de Navigation de l'API.

Temps de Navigation est une API JavaScript pour la précision de la mesure de la performance sur le web. L'API fournit un moyen simple d'obtenir la précision et le calendrier détaillé des statistiques-mode natif pour la page de navigation et les événements de chargement.

window.performance.memory donne accès à JavaScript utilisation de la mémoire de données.


Lecture recommandée

8voto

tvanfosson Points 268301

Je ne connais aucun moyen de connaître la quantité de mémoire utilisée par le navigateur, mais vous pourrez peut-être utiliser une heuristique basée sur le nombre d'éléments de la page. Uinsg jQuery, vous pouvez faire $('*').length et cela vous donnera le compte du nombre d’éléments DOM. Honnêtement, cependant, il est probablement plus facile de faire quelques tests d'utilisabilité et de proposer un nombre fixe d'onglets à prendre en charge.

4voto

Pablo Fernandez Points 32003

Utiliser l' outil Instantané de tas de chrome

Il existe également un outil Firebug appelé MemoryBug, mais il ne semble pas encore très mature.

3voto

Zachary K Points 1159

Si vous souhaitez simplement tester, il existe un moyen dans Chrome via la page développeur de suivre l'utilisation de la mémoire, mais vous ne savez pas comment le faire directement en javascript.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X