L'obtention de la Carte de la taille de la mémoire vive(RAM)
Je suis en utilisant une table de hachage pour mettre en cache certaines données importantes lors de mon application démarre.
Ce cache parfois pousse et ensuite réduit. Je veux savoir combien de mémoire c'est de prendre de la RAM.
Est-il possible d'obtenir la mémoire prise par une carte de KO? Est-il une API?
Vous devez utiliser un tas java profiler à l'étude de votre consommation de mémoire. Par exemple celui-ci
Ya je suis en train de faire. Je voulais juste surveiller que la quantité de mémoire c'est dans le stockage de cette Carte. Je veux l'afficher sur jsp en quelque sorte.
Autant que je sache, vous ne pouvez pas obtenir la taille d'une carte en un seul appel de méthode. Vous pouvez tenter d'obtenir le nombre d'entrées dans la carte et si vos entrées sont quelque chose que vous pouvez estimer la taille de la vous pouvez aller sur le faire. Sinon, vous pouvez tenter de dresser le profil de votre code avec un outil comme JVisualVM et obtenir un chiffre sur la quantité de mémoire est été mangé par les Cartes
s'il vous plaît laissez-nous savoir si AValchev la solution fonctionne.
Ya je suis en train de faire. Je voulais juste surveiller que la quantité de mémoire c'est dans le stockage de cette Carte. Je veux l'afficher sur jsp en quelque sorte.
Autant que je sache, vous ne pouvez pas obtenir la taille d'une carte en un seul appel de méthode. Vous pouvez tenter d'obtenir le nombre d'entrées dans la carte et si vos entrées sont quelque chose que vous pouvez estimer la taille de la vous pouvez aller sur le faire. Sinon, vous pouvez tenter de dresser le profil de votre code avec un outil comme JVisualVM et obtenir un chiffre sur la quantité de mémoire est été mangé par les Cartes
s'il vous plaît laissez-nous savoir si AValchev la solution fonctionne.
OriginalL'auteur NIVESH SENGAR | 2012-07-04
Vous devez vous connecter pour publier un commentaire.
je suis en utilisant cette méthode pour estimer la taille de la CARTE:
vous ne savez pas si ses bon pour la grande taille de la carte de données, car il semble que ces méthodes sont à l'aide d'un tampon qui prend aussi de la place en mémoire
OriginalL'auteur marcolopes
Il est un bon outil pour cela: ClassMexer
Vous pouvez estimer le mémoire de la table de hachage, y compris les objets référencés par:
long noBytes = MemoryUtil.deepMemoryUsageOf(myCacheMap);
OriginalL'auteur AValchev
Vous vous rendez compte, bien sûr, que votre
Map
contient des références à des objets qui vivent sur le tas, et non les objets eux-mêmes. Donc ça n'a aucun sens de se demander combien de mémoire de laMap
est à consommer sans chasser vers le bas l'ensemble de l'arbre de référence pour ajouter les octets pour les clés et les valeurs.L'objet de ne pas le faire; il n'y a aucune façon de l'accomplir.
Comme le sage commentaire ci-dessus dit, obtenir Visual VM avec tous les plugins et le profil de votre application.
Merci, posdef.
OriginalL'auteur duffymo
Il est pratiquement impossible de calculer la taille réelle d'un objet sans instrumentation.
Parfois, vous pouvez la calculer en raison de la taille des pointeurs, les types primitifs, les frais généraux d'objets, etc. mais le faire pour quelque chose d'aussi complexe qu'une table de hachage avec le contenu (de la taille réelle taille est fonction de son histoire et de hachage facteur et le hascode de tous ses éléments, modulo la valeur de hachage facteur) est quasi impossible.
La seule vraie solution est d'utiliser un segment de mémoire de l'analyseur, comme Eclipse Mat.
OriginalL'auteur Denys Séguret
Cela dépend beaucoup de votre JVM fournisseur et la version. Vous pouvez avoir un coup d'oeil à cette présentation pour une estimation approximative.
OriginalL'auteur Michał Kosmulski