Misurare le performance del codice in Java: JProfiler e SAP Memory Analizer

Pubblicato: novembre 5, 2007 in Informatica, Ingegneria
Tag:, , , , , , , , , , ,

Ogni buon programmatore sa quanto sia importante che il software prodotto sia non solo efficace ma anche efficiente… Sa quindi che è opportuno effettuare analisi di tipo qualitativo/quantitativo sul codice scritto.

In questi giorni ho avuto l’esigenza di analizzare come veniva utilizzata la memoria dalla suite che sto realizzando a lavoro e mi sono cimentato utilizzando due comodissimi tool.

Il primo è JProfiler è uno strumento molto utile nell’analisi delle performance di un’applicazione Java. Questi può essere utilizzato per l’analisi di applicazioni che girano in locale o in remoto, permette di verificare le prestazioni di application server o di semplici applet.
L’utilizzo è molto intuitivo grazie ad un client che permette la visualizzazione delle statistiche, che possono essere anche raccolte in tempo reale registrando tutte le attività.

Le statistiche visualizzate riguardano:

· La memoria: è possibile verificare quante istanze di oggetti/tipi vengono create e lo spazio che queste occupano in memoria. Potrete scegliere anche altre visualizzazioni come quelle per package ,ecc…Queste statistiche possono essere immortalate in delle apposite istantanee (snapshot) ch permettono di effettuare dei raffronti con esecuzioni future.

· La CPU: è possibile di vedere come viene utilizzato il processore, esaminando in quanto tempo viene eseguito ogni singolo metodo.

· I Thread: è possibile analizzare come vengono schedulati i vari thread.

· La Virtual Machine: è possibile monitorare lo stato della virtual machine analizzando la memoria occupata e disponibile.

JProfiler è inoltre facilmente integrabile negli IDE più popolari quali Eclipse, IDEA, IBM RAD, JBuilder, JDeveloper e NetBeans.

Questo software ha un’unica pecca: è a pagamento! J E’ comunque possibile ottenere una versione trial per 12 giorni.

Abbiamo analizzato JProfiler che, come suggerisce il nome stesso è un “profilatore” di codice… Nell’utilizzarlo bisogna essere consapevoli che questi introduce degli overhead e che quindi le statistiche possono essere influenzate.

Se vogliamo effettuare delle analisi off-line invece vi consiglio vivamente di utilizzare SAP Memory analyzer. Un prodotto totalmente gratuito e scaricabile previa registrazione.

Questo meraviglioso prodotto opera su snapshot che possono essere caricate dinamicamente se si dispone di “Java Server” o possono essere prodotte quando la Java Virtual Machine va in “out of memory”. Se la vostra applicazione sfora raramente la memoria messa a disposizione è consigliabile abbassare la dimensione massima della memoria centrale fornita alla JVM utilizzando il parametro

-Xmx10M

Con un valore molto basso: in esempio 10 Megabyte.

Oltre a questo parametro, lanciando l’applicazione java desiderata bisogna settare:

-XX:+HeapDumpOnOutOfMemoryError

Il comando completo sarà quindi per esempio:

>java -Xmx10M -XX:+HeapDumpOnOutOfMemoryError MiaApplicazione

Al verificarsi dell’ “out of memory” verra generato un file in formato .hprof che potrete aprire con SAP Memory Test tramite il comando Open Snapshot presente nel menu File.

Anche con questo strumento avrete la possibilità di verificare quante istanze di oggetti/tipi vengono create e lo spazio che queste occupano in memoria. Potrete vedere, per ogni elemento, quali oggetti sono puntati da essi o quali li referenziano. Potrete calcolare la ritenzione della memoria ed effettuare diverse manipolazioni delle statistiche fornite.

Con questi due strumenti potrete quindi verificare le performance delle vostre applicazioni e scovare tediosissimi bachi che divorano la RAM e/o la CPU del vostro pc.

Spero vi possa essere d’aiuto…

Big Mico. 😉

Annunci
commenti
  1. […] di SAP Memory analizer a runtime Tempo fa avevo pubblicato un articolo che illustrava come misurare le performance del vostro software scritto in java tramite JProfiler o […]

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...