plc*_*rre 9 java profiling visualvm
所以我用VisualVM分析我的应用程序.
我点了一个关于我的MySQL交互的热点.我的第一个想法是热点显示我的应用程序在IO之后等待的时间.但在分析报告中,VisualVM有两列"Time"和"Time(cpu)".也许这个术语被错误地使用了,但我假设自我时间(cpu)列不包括IO时间.经过更多的调试,我们得出结论,假设是错误的并且显示了IO时间,因为热点是在MySQL驱动程序的java.net.SocketInputStream.read()和其他不应该花费任何cpu的IO事情上.
所以,我的问题是为什么visualvm报告SocketInputStream.read()为cpu时间?
在监视线程活动时,本机调用始终处于RUNNABLE状态,这可能是因为JVM无法知道本机调用是在休眠还是实际正在执行某些操作.因此,在RUNNABLE状态下传递的时间计为CPU时间.
归档时间: |
|
查看次数: |
2301 次 |
最近记录: |