Actualmente estoy recibiendo el tiempo de CPU hilo total utilizando JMX de la siguiente manera:manera eficaz de conseguir tiempo de CPU hilo utilizando JMX
private long calculateTotalThreadCpuTime(ThreadMXBean thread) {
long totalTime = 0l;
for (ThreadInfo threadInfo : thread.dumpAllThreads(false, false))
totalTime += thread.getThreadCpuTime(threadInfo.getThreadId());
return totalTime;
}
A medida que el ThreadMXBean es en realidad un proxy remoto, el rendimiento es terrible , en el orden de magnitud de segundos para esta llamada al método real.
¿Hay una manera más rápida de hacer esto?
actualización: Estoy usando esto para la supervisión del rendimiento. Las mediciones fueron tanto del reloj de pared como de JProfiler, que mostró aproximadamente el 85% del tiempo que pasé en este método. Tengo algunas otras llamadas de MXBean (Runtime, Memory, GC), pero son mucho más baratas. Lo más probable es que todas las llamadas a thread.getThreadCpuTime
sean remotas.
Actualización 2: Captura de pantalla JProfiler que muestra los problemas de rendimiento.
Estoy usando esto para el control del rendimiento. Las mediciones fueron tanto del reloj de pared como de JProfiler, que mostró aproximadamente el 85% del tiempo que pasé en este método. Tengo algunas otras llamadas de MXBean (Runtime, Memory, GC), pero son mucho más baratas. –