所以我用VisualVM來分析我的應用程序。VisualVM socket.read
我打一個熱點有關我的MySQL互動。我的第一個想法是,這個熱點顯示了我的應用程序在IO之後等待的時間。但在剖析報告中,VisualVM有兩列「時間」和「時間(cpu)」。也許這個詞被錯誤地使用了,但我假設自己的時間(cpu)列不包括IO時間。經過更多調試之後,我們得出結論認爲假設是錯誤的,並且顯示IO時間,因爲熱點位於MySQL驅動程序的java.net.SocketInputStream.read()以及其他不需要任何cpu成本的IO事物上。
所以,我的問題是,爲什麼VisualVM的報告SocketInputStream.read()的CPU時間?
也許有一些忙碌的等待,例如,在循環中調用'available()'? –
對不起,我的錯誤。它在java.net.SocketInputStream.read() – plcstpierre