Java VisualVM的“ CPU探查器”选项卡中的“总时间(CPU)”列是否包含CPU执行其他进程所花费的时间?
例如,让我们考虑这样的情况:
虽然我正在分析我的应用程序,但CPU正在执行多个进程-我的进程以及其他一些进程(例如,我正在运行浏览器,或类似的东西)。
CPU已启动myMethod(),它在执行此方法已有一段时间,然后开始执行浏览器的进程并在那里停留了1秒钟,然后再次回到执行myMethod()并完成了它。因此,从myMethod()的开始到结束之间已经过了3秒钟,但是执行myMethod()仅用了2秒钟。
哪个时间将显示在Java VisualVM的CPU事件探查器选项卡的“总时间(CPU)”列中-2秒还是3秒?
报告CPU时间时,探查器将报告JVM自身花费的时间(可能包括“系统”时间。
(例如)浏览器使用的CPU时间不应在CPU时间列中考虑。如果是/,则列标题应该是“经过”或“真实”时间。
如果您对此不确定,请编写一些简单的测试程序并对它们进行概要分析:
查看您的应用程序调用Thread.sleep(....)
]时探查器报告的内容>
从System.in
中读取一行时,查看应用程序阻塞时探查器报告的内容。