私はVisualVMでアプリケーションをプロファイリングしていました。VisualVM socket.read
私はMySQLのやりとりについてホットスポットを打ちました。私の最初の考えは、ホットスポットは、私のアプリケーションがIO後に待っていた時間を示していたということでした。しかし、プロファイリングレポートでは、VisualVMには2つの列「時間」と「時間(cpu)」があります。たぶん用語が間違って使用されるかもしれませんが、私は自分の時間(CPU)の列はIO時間を除いていると仮定しました。より多くのデバッグを行った後、私たちは、ホットスポットがMySQLドライバのjava.net.SocketInputStream.read()と他のIOのもの(CPUを必要としないはず)のため、仮定が間違っていてIO時間を表示していると結論付けました。
私の疑問は、なぜvisualvmがSocketInputStream.read()をCPU時間として報告するのでしょうか?
多分、忙しく待っています。ループ内で 'available()'を呼び出す? –
私の間違い申し訳ありません。それはjava.net.SocketInputStream.read()にありました – plcstpierre