Java VisualVM中的“总时间(CPU)”是否包含CPU执行其他进程所花费的时间?

问题描述 投票:0回答:1

Java VisualVM的“ CPU探查器”选项卡中的“总时间(CPU)”列是否包含CPU执行其他进程所花费的时间?

例如,让我们考虑这样的情况:

  • 我运行一个程序,其中有一个名为myMethod()的方法,该方法进行一些计算。此计算需要2秒钟-因此,如果CPU不执行任何操作而仅执行我的代码,则执行此方法将花费2秒钟。
  • 虽然我正在分析我的应用程序,但CPU正在执行多个进程-我的进程以及其他一些进程(例如,我正在运行浏览器,或类似的东西)。

  • CPU已启动myMethod(),它在执行此方法已有一段时间,然后开始执行浏览器的进程并在那里停留了1秒钟,然后再次回到执行myMethod()并完成了它。因此,从myMethod()的开始到结束之间已经过了3秒钟,但是执行myMethod()仅用了2秒钟。

哪个时间将显示在Java VisualVM的CPU事件探查器选项卡的“总时间(CPU)”列中-2秒还是3秒?

java profiling jvisualvm
1个回答
0
投票

报告CPU时间时,探查器将报告JVM自身花费的时间(可能包括“系统”时间。

(例如)浏览器使用的CPU时间不应在CPU时间列中考虑。如果是/,则列标题应该是“经过”或“真实”时间。

如果您对此不确定,请编写一些简单的测试程序并对它们进行概要分析:

  • 查看您的应用程序调用Thread.sleep(....)]时探查器报告的内容>

  • System.in中读取一行时,查看应用程序阻塞时探查器报告的内容。

© www.soinside.com 2019 - 2024. All rights reserved.