Esercitazione: Analisi dei dati di creazione profili
Obiettivi
Analizzare i dati raccolti dalla creazione profilo di un processo Java, mediante le viste Creazione profili e log
nei seguenti modi:
- Identificare gli oggetti e i metodi che impiegano più tempo
- Identificare le classi ad alto consumo di memoria
- Individuare la simultaneità dei programmi
- Individuare perdite di memoria
- Esaminare ciascuna esecuzione dei metodi come una funzione di tempo
- Ottenere una vista più ampia del comportamento dell'esecuzione come una funzione di tempo
- Identificare i thread attivi
- Identificare quando i thread sono attivi
- Identificare i metodi richiamati frequentemente
- Indicare la raccolta di dati obsoleti
- Identificare diverse fasi dell'esecuzione del programma
- Studiare diversi richiami del metodo
- Studiare il chiamante di un metodo
Tempo necessario
1 ora
Attività preliminari
Prima di iniziare questa esercitazione, completare le attività riportate di seguito:
- Installare la piattaforma Eclipse, incluso TPTP (Test and Performance Tools Platform).
- Preparare il file di creazione profili di esempio (hcframe.jar) per l'importazione. Il file dovrebbe trovarsi nella seguente directory:
TPTP_install_dir\eclipse\plugins\org.eclipse.tptp.platform.collection.framework_4.0.0
Descrizione
In questa esercitazione, verranno utilizzate diverse viste di creazione profili e log, per analizzare la
classe PerformanceExample.class di esempio. L'esempio aprirà un pannello contenente due pulsanti.
Completare le seguenti attività:
- Apertura della prospettiva Creazione profili e log nel
workbench
- Creazione del profilo della classe PerformanceExample
- Analisi delle informazioni di profilo
Per aggiornare le viste durante il controllo dell'applicazione, scegliere il pulsante Aggiorna viste
.
Dal menu Finestra, fare clic su Apri prospettiva > Altro > Creazione profili e log.
Per creare il profilo della classe PerformanceExample, procedere come segue:
- Fare clic sull'elenco a discesa Profilo
e selezionare Profilo. Viene visualizzata la finestra Avvia profilo.
- Fare doppio clic su Applicazione Java esterna per creare una nuova configurazione.
- Passare alla scheda Principale.
- Digitare org.eclipse.hyades.test.collection.framework.PerformanceExample nel campo Nome classe.
- Fare clic su Aggiungi Jar per aggiungere il jar contenente questa classe.
- Selezionare TPTP_install_dir\eclipse\plugins\org.eclipse.tptp.platform.collection.framework_4.0.0\hcframe.jar
- Fare clic su Apri. Il jar viene aggiunto.
- Fare clic sulla scheda Controllo. È possibile specificare i criteri di creazione profili in questa scheda.
- Nella scheda Controllo, espandere il nodo Creazione profili Java, selezionare Analisi memoria di base e selezionare la casella di controllo che si trova accanto. In questo modo verranno aggiunte
informazioni relative alla memoria all'elenco di tipi di informazioni da raccogliere dall'applicazione.
- Selezionare Analisi tempo di esecuzione e selezionare la casella di controllo accanto.
Con questa opzione selezionata è possibile utilizzare le viste statistiche per analizzare le informazioni relative al tempo. È necessario raccogliere i dettagli grafici sull'esecuzione per poter utilizzare le viste Flusso di esecuzione e Richiamo del metodo. Poiché lo scopo di questo esempio è di guidare l'utente attraverso tutte le viste di creazione profili, comprese le viste Flusso di esecuzione e Richiamo del metodo, mentre si seleziona Analisi tempo di esecuzione, fare clic su Modifica opzioni, selezionare Mostra dettagli grafici sul flusso di esecuzione nella finestra Opzioni di modifica profili.
Selezionare inoltre la casella di controllo Raccogli classi boundary escluse dal filtro impostato e impostare Profondità classe boundary su 1. Fare clic su Fine.
- La pagina Insieme di filtri consente di specificare il sottoinsieme di informazioni che si desidera analizzare. Questa possibilità è utile se si desidera filtrare classi o pacchetti che non si trovano negli elementi da analizzare.
Selezionare il collettore dati Creazione profili Java, quindi fare clic su Modifica opzioni; verrà aperta la finestra Insieme di filtri. In Contenuto degli insieme di filtri selezionato, fare clic su Aggiungi per aggiungere classi o pacchetti per i quali si desidera raccogliere dati.
Viene visualizzata la finestra Aggiunta filtro.
- Per creare il profilo di questa classe, immettere org.eclipse.hyades.test.collection.framework.* come Classe.
- Specificare come Nome metodo il simbolo * per includere solo i metodi relativi a questo esempio.
- Fare clic su OK. Il criterio di filtro viene aggiunto all'elenco dei contenuti.
- Per escludere altre classi esistenti dall'elenco di contenuti filtro, fare clic su Includi nella
colonna Regola per la classe e modificarla in Escludi.
- Fare clic su Avanti nella pagina Limiti. Questa pagina controlla la quantità di dati raccolti, in base al tempo trascorso o al numero di richiami dei metodi. Accettare le impostazioni predefinite. Fare clic su Fine per chiudere la finestra e applicare le modifiche.
- Fare clic sulla scheda Destinazione. ProfileProject e Default Monitor sono le risorse di creazione profili predefinite e possono essere utilizzate per memorizzare i dati di questa sessione di creazione profili.
- Scegliere Profilo.
- Le risorse di profilo richieste vengono create e i processi vengono visualizzati nella vista Controllo di creazione profili.
- Abilitare la visualizzazione dei controlli selezionando Layout distribuito come mostrato nella seguente screen capture. In tal modo, il
controllo raggruppa i dati così come il computer sul quale è in esecuzione
il workbench.

Visualizzazione del comportamento dell'esecuzione in un certo periodo di tempo
È possibile esaminare l'esecuzione dell'applicazione utilizzando la vista e la tabella Flusso di esecuzione.
L'esecuzione dell'intero programma viene rappresentata graficamente in questa vista e in formato tabulare. Nella
vista Flusso di esecuzione, il tempo viene visualizzato sull'asse verticale. La tabella Flusso di esecuzione
viene visualizzata al di sotto della vista Flusso di esecuzione ed elenca i singoli thread e i metodi richiamati
da ciascun thread.
- Nella vista Controllo di creazione profili, selezionare il proprio controllo, fare clic con il tasto destro del mouse e selezionare Apri con > Flusso di esecuzione
per la aprire la vista Flusso di esecuzione. Viene aperta la vista Flusso di esecuzione.
- Per esaminare un metodo particolare, fare clic sul metodo per selezionarlo. Tutti i metodi da esso richiamati verranno evidenziati in giallo. La
lunghezza verticale dell'area evidenziata rappresenta un'indicazione del tempo di base del metodo. Il valore
esatto del tempo di base viene visualizzato nella riga di stato.

Spostando il cursore su un
oggetto nella vista, verranno visualizzate informazioni dettagliare nella barra di stato nella parte inferiore della finestra.
- Fare clic su Zoom avanti
per abilitare il cursore, quindi fare clic per ingrandire un'area.
Nota: Per aggiornare le viste durante il controllo dell'applicazione, fare clic sul pulsante Aggiorna viste
.
Identificazione thread attivi
Nella vista Flusso di esecuzione, ciascun thread contiene periodi di attività,
identificati da una varietà di chiamate ai metodi. Nelle rappresentazioni simboliche, il primo metodo
richiamato è una riga e i metodi da esso richiamati vengono visualizzati come
righe alla sua destra. La sequenza delle chiamate ai metodi procede da sinistra a destra; le parti attive dei
thread vengono identificate dalla progressione sinistra-destra.
Quando si seleziona l'intera sezione, evidenziando la sequenza delle chiamate ai metodi,
nella riga di stato viene visualizzato il tempo di base trascorso per l'esecuzione di tale sequenza. Per visualizzare il tempo di base durante il quale il thread è attivo, individuare la differenza tra i due intervalli successivi:
- Spostare il cursore sulla riga orizzontale superiore dell'area gialla selezionata per visualizzare
il tempo di base corrispondente nella riga di stato.
- Allo stesso modo, spostare il cursore sul margine inferiore dell'area gialla selezionata (che
copre il periodo di esecuzione durante il quale è attiva la sequenza dei metodi), e visualizzare
il relativo tempo di base.
Suggerimenti
- Se il grafico è troppo fitto e difficile da leggere, ingrandire
l'area desiderata.
- Selezionando un metodo, tutti i metodi da esso richiamati verranno evidenziati in giallo.
- È possibile trascinare le viste nel workbench, e, se necessario, disporle simultaneamente.
- In qualsiasi punto viene spostato il cursore, il tempo di base corrispondente viene indicato nella barra
di stato.
- Per reimpostare il contenuto della vista, scegliere Home.
Identificazione dei metodi richiamati frequentemente
Per identificare i metodi richiamati frequentemente, procedere come segue:
- Utilizzare lo strumento di ingrandimento
per ingrandire
una sequenza di metodi richiamati.
- Individuare le righe dello stesso colore nell'area selezionata. Tali righe identificano i metodi
della stessa istanza di classe richiamati più volte.
- Controllare la lunghezza delle righe di diverso colore (ciascuna delle quali rappresenta un metodo). La lunghezza della riga è direttamente proporzionale al tempo di esecuzione del metodo che rappresenta.
Indicazione della raccolta dati obsoleti
Normalmente non è possibile rilevare se è avvenuta la raccolta di dati obsoleti per un oggetto,
analizzando le righe di un thread in questa vista.
Procedere come segue:
- Per impostazione predefinita, il thread di raccolta dati obsoleti non viene visualizzato. Abilitarlo selezionando Thread > Raccolta dati obsoleti dal menu Contesto per la vista.
- Controllare la prima colonna a sinistra nella vista. Questa colonna è riservata per il thread di raccolta
dati obsoleti e viene chiamata colonna GC thread.
- Verificare se la colonna GC thread contiene un rettangolo. È possibile che il rettangolo si trovi
molto più in basso rispetto alle chiamate ai metodi nell'oggetto. Il rettangolo viene
visualizzato nella colonna GC thread ogni qual volta si verifica la raccolta di dati obsoleti per
un oggetto.
Identificazione fasi diverse dell'esecuzione di un programma
Identificazione fase iniziale
- Utilizzare lo strumento di ingrandimento
per ingrandire
una sequenza di metodi richiamati nella parte superiore del thread principale.
- Individuare i metodi contrassegnati -init-.
- Selezionare uno di questi metodi. La barra di stato viene aggiornata e indica che
il metodo viene utilizzato nell'inizializzazione (assegnando valori alle variabili
utilizzate nell'applicazione).
Analisi dei metodi mediante le vista Richiamo del metodo
- Nella vista Controllo di creazione profili, selezionare un controllo o un'agente. Fare clic
con il tasto destro del mouse e selezionare Apri con > Flusso di esecuzione. Viene aperta la vista Flusso di esecuzione.
- Selezionare il metodo da esaminare, fare clic con il tasto destro del mouse e scegliere Mostra richiamo del metodo.
- Utilizzare lo strumento di ingrandimento
per ingrandire una sezione della vista. Il colore delle righe varia in base alle classi e le righe sono collegate
da linee orizzontali che rappresentano le chiamate ai metodi.
- Selezionare un metodo facendo clic sul nome.
- Fare clic su Aggiorna viste
per assicurarsi che le informazioni visualizzate siano aggiornate.
- Osservare la riga:

La riga mostra il nome del metodo, seguito da n/m, dove n è la chiamata
attualmente visualizzata su un totale di m chiamate.
- Scegliere Indietro
e
Avanti
per
visualizzare tutti le chiamate al metodo selezionato (o tutti i messaggi per l'oggetto
selezionato). La frazione sulla barra degli strumenti cambia per indicare la chiamata visualizzata.
Individuazione del chiamate di un metodo
Per individuare cosa sta richiamando un metodo, continuando nella vista Richiamo del metodo, procedere
come segue:
- Per visualizzare il chiamante del metodo, fare clic sul pulsante Mostra chiamante
. Vengono visualizzati il metodo e il rispettivo chiamante.
- Per visualizzare più dettagli sul chiamante del metodo per ciascuna chiamata visualizzata, posizionare
il cursore sulla riga che rappresenta il chiamante nella vista. La riga di stato indicherà le informazioni
relative al chiamante.
- Per visualizzare il metodo che viene richiamato dal metodo selezionato, fare clic sul pulsante Mostra
metodo richiamato
.
(C) Copyright IBM Corporation 2000, 2006.