Hice un perfil de mi código con JProfiler y YourKit. Sin embargo, no he podido averiguar cómo detectar qué parte del código es responsable de la alta carga de la CPU.Perfilado de Java: detectar qué pieza de código provoca una carga de CPU elevada
Es trivial detectar puntos calientes si el tiempo de respuesta es malo. En mi caso, el tiempo de respuesta no es un problema. Es solo que la carga de la CPU es realmente alta (sorprendentemente alta) durante el poco tiempo que se procesa esta solicitud en particular.
¿Cómo puedo señalar qué clase (s)/método (s) están causando esto? Creo que lo que estoy buscando es algún tipo de lista que me diga cuántos ciclos de CPU requiere el procesamiento de un método, o eso.
Puntos calientes del método sería donde me gustaría mirar. ¿Hay alguna razón por la que no creas este resultado? Cuando se realiza una solicitud, ¿no esperaría que la CPU esté al 100% (o al menos un núcleo completo)? –
Sí, por supuesto, tienes razón. La medición del número de ciclos de CPU y el tiempo de ejecución de medición están directamente relacionados como [tiempo de ejecución = (número de ciclos * tiempo por ciclo) + espera de E/S y similares]. –