Así que estaba perfilando mi aplicación con VisualVM.VisualVM socket.read
Aparece un punto de acceso sobre mi interacción con MySQL. Lo primero que pensé fue que el punto caliente indicaba que mi aplicación estaba esperando después del IO. Pero en el informe de perfiles, VisualVM tiene dos columnas "Tiempo" y "Tiempo (CPU)". Tal vez el término se usa de manera incorrecta, pero asumí que la columna de auto-tiempo (cpu) excluía el tiempo de IO. Después de más depuración, llegamos a la conclusión de que la suposición era incorrecta y mostraba el tiempo de IO porque el punto de acceso estaba en java.net.SocketInputStream.read() del controlador MySQL y otras cosas IO que no deberían costar ninguna CPU.
Entonces, mi pregunta es ¿por qué visualvm informa SocketInputStream.read() como hora de CPU?
Quizás haya alguna espera ocupada, p. llamando 'disponible()' en el ciclo? –
Lo siento, mi error. Fue en java.net.SocketInputStream.read() – plcstpierre