La nostra applicazione ha ~ 10 thread che svolgono attività separate (nessun pool di thread). Non stiamo riscontrando un deadlock, ma stiamo sempre cercando di ridurre la latenza per rispondere a una richiesta, quindi siamo interessati a determinare quali lock sono i più contesi. jconsole mostra quante volte i thread sono bloccati, e non è molto spesso, ma vogliamo ancora sapere quali sono i lock più contesi.Determinare quali blocchi sono maggiormente contesi?
Stiamo usando la JVM Sun, quindi JLA da IBM non è utile e non stiamo girando su Solaris, quindi non possiamo usare dTrace.
MODIFICA: desidero eseguire questa osservazione in produzione, in cui un profiler rallenterebbe l'app in modo inaccettabile. Questo è un sistema di trading, se siamo lenti, perdiamo denaro, quindi non eseguiamo profiler nella produzione. È anche abbastanza difficile simulare i numerosi scambi a cui parliamo in un test delle prestazioni.
dTrace è l'unico sistema di cui sono personalmente a conoscenza che fa ciò che vuoi senza strumenti di profilazione. – aperkins
Pensandoci meglio, ritengo che la strumentazione sia l'approccio migliore. È possibile registrare le singole richieste di blocco o mantenere i contatori globali. –