VisualVM socket.read

Итак, я профилировал свое приложение с помощью VisualVM.

Я попал в горячую точку по поводу моего взаимодействия с MySQL. Моей первой мыслью было то, что горячая точка показывала время ожидания моего приложения после ввода-вывода. Но в отчете о профилировании VisualVM имеет два столбца «Время» и «Время (процессор)». Возможно, этот термин используется неправильно, но я предположил, что столбец собственного времени (процессора) не включает время ввода-вывода. После дополнительной отладки мы пришли к выводу, что предположение было неверным и показывало время ввода-вывода, потому что точка доступа находилась на java.net.SocketInputStream.read() драйвера MySQL и других вещах ввода-вывода, которые не должны стоить никакого процессора.

Итак, мой вопрос: почему visualvm сообщает SocketInputStream.read() как процессорное время?

Screnshot

9
задан plcstpierre 4 June 2012 в 15:12
поделиться