2010-08-21 14 views
6

Attualmente sto usando VisualVM, ma il problema che sto avendo è che non posso salvare i grafici che genera. Devo riportare alcuni dati sull'utilizzo della memoria e sul tempo di esecuzione, sebbene il tempo di esecuzione sia facile da ottenere con System.nanoTime(). Ho anche provato il profiler NetBeans ma non è quello che voglio, dal momento che non sto cercando parti specifiche che potrebbero rallentarlo o altro, quindi sarebbe eccessivo. Il problema più grande è che consuma troppo tempo di elaborazione. Inoltre, non mi permette di acquisire/trasferire facilmente i dati, come VisualVM, almeno per quanto posso dire.Il modo migliore per misurare l'utilizzo della memoria di un programma Java?

Idealmente il modo migliore per farlo sarebbe una chiamata al metodo, perché in questo modo sarei in grado di ottenere le informazioni molto più facilmente, ma qualsiasi cosa come VisualVM che in realtà mi consente di salvare il grafico va bene. Anche le prestazioni con VisualVM sono piuttosto buone, rispetto al profiler NetBeans, anche se suppongo sia perché non stavo usando il suo profiler.

Attualmente sto usando Ubuntu, ma Windows 7 va bene. Preferirei avere un programma specializzato in questo, anche se le informazioni ottenute dai programmi che non includono probabilmente la JVM e altre cose che sarebbero meglio tralasciare.

Bene, a quanto pare, è possibile salvare istantanee della sessione corrente e massimizzare la finestra in VisualVM, in modo da poter ingrandire i grafici, scattare un'istantanea e tagliarli ... Ma è una specie di trucco. Migliori suggerimenti benvenuti.

risposta

0

Prova JProfiler. Sebbene non sia gratuito, puoi provare prima la versione di valutazione.

3

Guarda la classe Runtime. Ha freeMemory, maxMemory e totalMemory. Probabilmente è abbastanza vicino per i tuoi scopi.

0

La console HPjmeter è gratuita. Esegui il tuo processo Java con -Xloggc:<file> e apri lo <file> con esso. Non solo puoi salvare le tue sessioni, ma puoi confrontare le esecuzioni. Altre opzioni da considerare compresi nella riga di comando sono:

-XX:+PrintGCTimeStamps 
-XX:+PrintGCDetails 
2

si può preferire il metodo elegante per misurare la memoria, piuttosto che incidere immagine. JConsole è noto per monitorare le applicazioni di JMX, fornisce API del programma. Immagino sia ciò di cui hai bisogno.

See: Using JConsole to Monitor Applications

15
Runtime.getRuntime().freeMemory(); 

Runtime.getRuntime().totalMemory();