Este es un problema típico de 'CPU alta'.
Hay dos tipo de problemas de altos CPU
a) Cuando el hilo está utilizando 100% de la CPU de un núcleo (Esto es su escenario)
b) uso de la CPU es 'anormalmente alta' cuando ejecutar ciertas acciones. En tales casos, la CPU puede no ser del 100%, pero será anormalmente alta. Por lo general, esto sucede cuando tenemos operaciones intensivas de CPU en el código como el análisis XML, serialización de serialización, etc.
El caso (a) es fácil de analizar. Cuando experimentas un 100% de CPU 5-6 volcados de hilo en un intervalo de 30 segundos. Busque un hilo que esté activo (en estado "ejecutable") y que esté dentro del mismo método (puede inferirlo al monitorear la pila de hilos). Lo más probable es que usted verá una 'espera ocupado' (véase el código de abajo para ver un ejemplo)
while(true){
if(status) break;
// Thread.sleep(60000); // such a statement would have avoided busy wait
}
Caso (b) también se pueden analizar utilizando vertederos de rosca tomadas en intervalos iguales. Si tiene suerte, podrá encontrar el código del problema, si no puede identificar el código del problema mediante el uso de volcado de hilo. Necesitas recurrir a los profilers. En mi experiencia, el perfil de YourKit es muy bueno.
Siempre trato primero con los volcados de hilo. Los perfiladores solo serán el último recurso. En el 80% de los casos, podremos identificar el uso de volcados de hilo.
gracias chicos! Estoy usando eclipse por cierto – jjnguy