2009-07-22 13 views
9

mio sistema Leopard ha DTrace costruito nel Ho anche Java 6 installato, utilizzando il programma di installazione di Apple fornito:.Come utilizzare le sonde hotspot in dtrace su Mac OS X Leopard?

$ java -version 
java version "1.6.0_13" 
Java(TM) SE Runtime Environment (build 1.6.0_13-b03-211) 
Java HotSpot(TM) 64-Bit Server VM (build 11.3-b02-83, mixed mode)

Tuttavia, DTrace non mostra sonde hotspot quando si elencano le sonde:

$ sudo dtrace -l | grep spot 
$

Can qualcuno mi dice come abilitare le sonde dtrace per Java (presumibilmente vengono fornite con Java 6) in Leopard?

risposta

5

"Hmm, interessante io sono. eseguendo le stesse configurazioni ma per me le sonde non vengono visualizzate. Che riga di comando hai usato? Inoltre "sudo dtrace -l | grep spot "?"

  • Solo un controllo incrociato. Si dovrebbe avere un'applicazione java in esecuzione nel momento in cui si esegue "sudo dtrace -l | grep spot". Solo allora verranno elencate le sonde.
+0

No, non avevo Java in esecuzione. Effettivamente sta funzionando ora. Grazie! – user66237

+0

I probe sono denominati come 'hotspot_jni5867', il che significa che l'id del processo è incluso nel nome del probe. Le sonde vengono create dinamicamente all'avvio di un processo. –

0

Sei sicuro che questo si applica anche alla JVM Apple? Mentre gli hook di DTrace sono menzionati nel documento su JDK 6, puoi anche trovare su Non-standard Java HotSpot VM Options (enfasi aggiunta):

-XX: -ExtendedDTraceProbes Abilita le sonde di dtrace che influiscono sulle prestazioni.
(introdotto nel 6. Rilevante per Solaris solo.)

Non è un buon segno, se questa è la piattaforma specifica. AFAIK Apple crea la sua JVM personalizzata.

+1

Buon punto. Sembra infatti che solo il JDK di Sun supporti dtrace. OpenJDK ha il supporto pianificato ma non ancora implementato sembra. Probabilmente lo stesso vale per l'implementazione di Apple. – user66237

1

Io corro Snow Leopard con Java 1.6, e posso vedere le sonde hotspot:

...

43223 hotspot_jni3644 libclient.dylib     jni_AllocObject AllocObject-entry 
43224 hotspot_jni3644 libclient.dylib     jni_AllocObject AllocObject-return 
43225 hotspot_jni3644 libclient.dylib   jni_AttachCurrentThread AttachCurrentThread-entry 
43226 hotspot_jni3644 libclient.dylib   jni_AttachCurrentThread AttachCurrentThread-return 
43227 hotspot_jni3644 libclient.dylib jni_AttachCurrentThreadAsDaemon AttachCurrentThreadAsDaemon-entry 
43228 hotspot_jni3644 libclient.dylib jni_AttachCurrentThreadAsDaemon AttachCurrentThreadAsDaemon-return 
43229 hotspot_jni3644 libclient.dylib    jni_CallBooleanMethod CallBooleanMethod-entry 
43230 hotspot_jni3644 libclient.dylib    jni_CallBooleanMethod CallBooleanMethod-return 

...

+0

Hmm, interessante. Sto eseguendo le stesse configurazioni ma per me le sonde non si presentano. Che riga di comando hai usato? Anche "sudo dtrace -l | grep spot"? – user66237

+0

'sudo dtrace -l | grep hotspot 'lo fa. –

Problemi correlati