Così stavo profilando la mia applicazione con VisualVM.VisualVM socket.read
Ho colpito un hotspot sulla mia interazione MySQL. Il mio primo pensiero è che l'hot spot mostrava il tempo che la mia applicazione stava aspettando dopo l'IO. Ma nel report di profilazione, VisualVM ha due colonne "Time" e "Time (cpu)". Forse il termine è erroneamente usato, ma ho pensato che la colonna di auto-tempo (cpu) escludesse il tempo di IO. Dopo ulteriori debug, abbiamo concluso che l'ipotesi era sbagliata e mostrava il tempo di attesa perché l'hotspot era su java.net.SocketInputStream.read() del driver MySQL e altre cose di IO che non dovrebbero costare alcuna CPU.
Quindi, la mia domanda è perché visualvm segnala SocketInputStream.read() come tempo di cpu?
Forse c'è un po 'di attesa, ad es. chiamando 'available()' nel ciclo? –
Scusate il mio errore. Era su java.net.SocketInputStream.read() – plcstpierre