Je travaille sur un grand système préexistant et je ne peux utiliser aucun des outils de profilage externes qui ont été mentionnés dans d'autres questions. Cela étant dit, y a-t-il une manière programmatique pour que java imprime les variables qui sont encore allouées et utilise l'espace mémoire? Le nom et le type de la variable seraient idéaux, mais toute information sur les variables d'identification serait utile.suivi de la mémoire par programmation en Java
1
A
Répondre
0
- Pour chaque classe, ajoutez un membre int statique (initialement zéro) de sorte qu'il soit incrémenté dans le constructeur et décrémenté dans le destructeur. Cela vous donne un nombre d'objets de chaque classe. (Vous devrez peut-être synchroniser le compteur inc/dec si le système est multithread)
- Imprimez les comptages d'objets de toutes les classes et
Runtime.getRuntime().totalMemory()
périodiquement.
0
Avez-vous essayé VisualVM? C'est assez non intrusif, et devrait être en mesure de vous donner une bonne idée de l'utilisation de la mémoire. Dans le pire des cas, vous pouvez toujours tuer le projet et vous débarrasser du core dump (en supposant que vous utilisez un système d'exploitation prenant en charge les dumps core).
0
Faites attention à ne placer aucun code à l'intérieur finalisez, car tout code putant dans finalize pourrait augmenter la durée de vie de votre objet; en fait, dans des cas extrêmes, un objet peut ne jamais être enregistré.
Questions connexes
- 1. Suivi de l'utilisation de la mémoire javascript
- 2. Fuite de mémoire de suivi
- 3. Sharepoint 2007 Suivi de l'utilisation Accès par programmation
- 4. Puis-je créer un disque virtuel en mémoire par programmation?
- 5. Programmation simultanée en Java
- 6. Socket Programmation en Java
- 7. Suivi de la mémoire des threads et de la consommation du processeur
- 8. Impression de pages Web par programmation en Java
- 9. Programmation de socket en Java
- 10. Suivi des fuites de mémoire de cacao
- 11. Programmation en Java bytecode
- 12. suivi de boucle pour java
- 13. DB Java en mémoire
- 14. suivi des allocations de mémoire C++
- 15. Application de surveillance/mémoire de suivi
- 16. Comment analyser la date de suivi en Java?
- 17. Surveillance de la consommation de mémoire par différents objets Java
- 18. Comment accéder à l'utilisation de la mémoire par programmation via JMX?
- 19. gestion de la mémoire java
- 20. allocation de mémoire en Java
- 21. utilisation de la mémoire java
- 22. Allocation de mémoire en Java
- 23. Lier formview à la programmation par programmation en C#
- 24. Comment se connecter à Facebook par programmation en utilisant Java?
- 25. Gérer un logiciel par programmation en utilisant java
- 26. Authentification par programmation Java EE 5
- 27. Navigateur Web par programmation Bibliothèque Java
- 28. Aide à la programmation Java
- 29. En-tête de programmation socket Java
- 30. Classes utilitaires en programmation Java
Parle-t-il d'utiliser la finalisation? :) – willcodejavaforfood
J'ai fini par utiliser une légère variation de votre idée. Il y a beaucoup trop de classes pour faire ce que vous suggérez avec chacune d'elles mais j'ai plutôt ajouté le compteur à la classe dont toutes les boîtes de dialogue dans le système héritent. Cela m'a dit qu'il y avait des boîtes de dialogue en cours de création qui ne s'affichaient pas à l'écran. Après cela, j'ai fait une liste statique pour contenir les dialogues nouvellement créés (et les supprimer à la fin de la boîte de dialogue) – lathomas64
@willcodejavaforfood: désolé pour les informations erronées, je suis un gars C++, ne réalisant pas qu'il n'y avait pas d'équivalent de destructeur en Java. – rwong