Esistono strumenti per visualizzare gli oggetti utilizzati in un programma?
-
22-07-2019 - |
Domanda
Non sono sicuro di quanto utile sarebbe, ma ho pensato che sarebbe stato bello visualizzare gli oggetti utilizzati nel mio programma e quali oggetti a cui si fa riferimento da dove. Immagino che genererebbe alcuni dati che verrebbero utilizzati da un programma come graphviz. Ci sono degli strumenti che lo fanno, altrimenti quanto sarebbe difficile farlo da solo? Idealmente, questo funzionerebbe per qualsiasi programma arbitrario, anche se in caso di necessità potrei apportare alcune modifiche al codice (come aggiungere una chiamata dumpObjects () o altro)
Sono interessato a farlo per Java, ma se ci sono soluzioni per altre lingue, per favore pubblica anche quelle.
Soluzione
Un profiler ti consentirebbe di vedere quali oggetti vengono creati in fase di esecuzione. Questo è l'output di JProfiler per esempio:
(fonte: ej-technologies.com )
Altri suggerimenti
Sun ha sviluppato VisualVM che include la memoria e la profilazione dei processi. Supporta anche plugin per tecnologia come OSGi.
Un caso d'uso interessante sarebbe l'analisi e l'ottimizzazione della memoria. Questo è esattamente ciò di cui parla Eclipse MAT . Dai un'occhiata.
alt text http://dev.eclipse.org /blogs/memoryanalyzer/files/2008/05/dom_tree.gif
Per visualizzare le strutture grafiche (compresi i grafici degli oggetti), ci sono molti strumenti basati su GraphViz: http://www.graphviz.org/
Esiste il Visualizzatore di oggetti grafici che visualizza classi e oggetti in 3D. Per ora manca un'API per automatizzare l'inizializzazione, tuttavia non dovrebbe essere troppo difficile aggiungere questa funzionalità. Codice sorgente anche su Github .
Modifica: apparentemente c'è già del lavoro in quella direzione: https://eprints.hsr.ch/491/
non sono sicuro se questo è ciò a cui stai puntando, ma doxygen farà praticamente tutto ciò .
ci vorrà un mucchio di codice di compilazione e lo trasformerà in html con riferimento incrociato, rtf di pdf. completato eseguirà la chiamata dell'albero per ciascuna funzione e "citato da " per ogni variabile