Devo misurare la quantità di memoria consumata dai miei test JUnit.Metodi per misurare il consumo di memoria durante l'esecuzione dei test JUnit
Quindi il modo più ovvio (ma non comoda) è quello di eseguire JVM con argomenti come "-Xms128m -Xmx512m" e tenere traccia di quando vado a prendere l'errore OutOfMemory.
Il secondo modo è richiedere un heapdump dopo aver eseguito tutti i miei test e quindi utilizzare Memory Analyzer Tool. Ma non è utile farlo ogni volta che eseguo dei test.
Il modo desiderato è, diciamo, per registrare il consumo di memoria in un file con valori quali il consumo di memoria massima, consumo medio, chiamate GC contare ecc O anche disegnare un diagramma che vi mostrerà come è stata utilizzata la memoria .
E la domanda è: ci sono strumenti, metodi o strumenti per fare questo? O forse i miei desideri sono irreali e ingenui e non c'è modo di raccogliere tali dati?
I test sono in esecuzione in IntelliJ Idea con JUnit4. Sono libero di usare qualsiasi altro ambiente. Grazie in anticipo per qualsiasi consiglio!
Beh, se si usa un po 'di server Linux o Unix, un modo semplice sarebbe quello di fare una shell che controlla il PID e stampare la dimensione della memoria a intervalli dati. Dovresti avviare il programma con un basso -Xms e un alto -Xmx. In questo modo non monitoreresti le dimensioni esatte del tuo heap di oggetti, ma almeno il vero consumo del tuo processo. Un'altra idea che mi viene in mente è scoprire come gli ApplicationServer stampano le informazioni GC per registrare i file e vedere se è possibile configurare la configurazione per stampare "Verbose GC info". Questo normalmente include informazioni dettagliate che puoi interpretare in seguito, se necessario. – Martin
http://www.jvmmonitor.org/ per Eclipse, o semplicemente usa jconsole, ecc. –
Non puoi semplicemente usare un profiler, ad esempio da Eclipse? –