2010-05-06 27 views

Respuesta

7

Esto no es trivial. Su mejor opción es usar un generador de perfiles que pueda acumular los ciclos reales de CPU utilizados.

+3

+1 El JDK incluye un generador de perfiles, JVisualVM, que es lo primero que puedes probar. – Jesper

17

Java MXBeans puede proporcionar tiempo de CPU para cada subproceso:

import java.lang.management.ManagementFactory; 
import java.lang.management.ThreadMXBean; 

long nanos = ManagementFactory.getThreadMXBean().getThreadCpuTime(Thread.currentThread().getId()); 
+0

Tenga en cuenta que la disponibilidad de esta característica depende de la plataforma. Se recomienda comprobar el indicador 'isCurrentThreadCpuTimeSupported' antes de usar' getThreadCpuTime'. –

0

utilizar un soluciones de perfilado que soporta múltiples métricas. Los llamamos medidores (de métricas) en nuestro producto, que admiten estándares como el tiempo de CPU, el tiempo de bloqueo, el tiempo de espera e incluso medidores personalizados basados ​​en indicadores clave de rendimiento. Supongo que también le gustaría ver qué está haciendo exactamente un hilo que, en ese caso, definitivamente debe considerar un producto en lugar de una solución ad hoc de fabricación casera.

Cuestiones relacionadas