そのため、VisualVMを使用してアプリケーションのプロファイリングを行っていました。
MySQLの相互作用についてホットスポットにぶつかりました。私が最初に考えたのは、ホットスポットは、アプリケーションがIOの後に待機している時間を示しているということでした。ただし、プロファイリングレポートでは、VisualVMには「Time」と「Time(cpu)」の2つの列があります。この用語は間違って使用されている可能性がありますが、自己時間(cpu)列はIO時間を除外していると思いました。さらにデバッグした後、ホットスポットがMySQLドライバーのjava.net.SocketInputStream.read()およびCPUのコストがかからないその他のIOにあるため、仮定が間違っており、IO時間を示していると結論付けました。
だから、私の質問は、なぜvisualvmがSocketInputStream.read()をCPU時間として報告するのですか?