Existe-t-il des outils permettant de visualiser les objects utilisés dans un programme?

Je ne sais pas à quel point cela serait utile, mais j’ai pensé qu’il serait peut-être intéressant de visualiser les objects utilisés dans mon programme et les objects référencés à partir de quel endroit. Je suppose que cela générerait des données qui seraient utilisées par un programme tel que graphviz. Existe-t-il des outils pour le faire, sinon, serait-il difficile de le faire moi-même? Idéalement, cela fonctionnerait pour n’importe quel programme arbitraire, bien que si nécessaire je pourrais apporter quelques modifications au code (comme append un appel à dumpObjects () ou autre)

Cela m’intéresse de faire cela pour Java, mais s’il existe des solutions pour d’autres langues, postez-les également.

Un profileur vous permettrait de voir quels objects sont créés au moment de l’exécution. Voici le résultat de JProfiler:

jprofiler heap walker http://www.ej-technologies.com/products/jprofiler/images/screenshots/heap_walker_references_fsb.png

Sun a développé le VisualVM, qui inclut le profilage de la mémoire et des processus. Il prend également en charge des plugins pour des technologies telles que OSGi.

Un cas d’utilisation intéressant serait l’parsing et l’optimisation de la mémoire. C’est précisément ce que propose Eclipse MAT . Vérifiez-le.

texte alt http://dev.eclipse.org/blogs/memoryanalyzer/files/2008/05/dom_tree.gif

Pour visualiser les structures de graphes (y compris les graphes d’objects), il existe de nombreux outils basés sur GraphViz: http://www.graphviz.org/

Il y a le visualiseur de graphe d’object qui affiche les classes et les objects en 3D. Pour l’instant, il manque une API pour automatiser l’initialisation, mais il ne devrait pas être trop difficile d’append cette fonctionnalité. Code source également sur Github .

Edit: des travaux sont déjà en cours dans ce sens apparemment: https://eprints.hsr.ch/491/

OGV

Je ne sais pas si c’est ce que vous visez, mais Doxygen fera à peu près tout cela.

cela prendra un tas de code de compilation et le transformera en html, RTF de pdf. compléter sera appelant arbre pour chaque fonction et “référencé par” pour chaque variable