Java VisualVM 中的 "total time (CPU)" 是否包含 CPU 用于执行其他进程的时间?
does "total time (CPU)" in Java VisualVM contain time which CPU spent executing other processes?
CPU VisualVM 的 CPU 分析器选项卡中的 "total time (CPU)" 列是否包含 CPU 用于执行其他进程的时间?
例如,让我们考虑这样的情况:
- 我 运行 一个程序,其中我有一个名为 myMethod() 的方法,它可以进行一些计算。这个计算需要 2 秒 - 所以如果 CPU 什么都不做,只执行我的代码,那么执行这个方法需要 2 秒。
当我分析我的应用程序时,CPU 正在执行多个进程 - 我的进程和其他一些进程(例如,我有一个浏览器 运行ning,或类似的东西)。
CPU启动了myMethod(),执行了一段时间这个方法,然后开始执行浏览器的进程,停留了1秒,然后又回到执行myMethod( ) 并完成了它。所以在 myMethod() 开始和结束之间已经过去了 3 秒,但只有 2 秒用于执行 myMethod()。
Java VisualVM 的 CPU 分析器选项卡的 "total time (CPU)" 列中显示的时间是 2 秒还是 3 秒?
报告 CPU 时间时,探查器将报告 JVM 本身花费的时间(可能包括 "system" 时间)。
CPU 浏览器使用的时间不应计入 CPU 时间列。如果是 / 则列标题 应该 是 "elapsed" 或 "real" 时间。
如果您对此没有信心,请编写一些简单的测试程序并对其进行分析:
查看当您的应用程序调用 Thread.sleep(....)
时探查器报告的内容
当您的应用程序从 System.in
.
读取一行时发生阻塞,请查看探查器报告的内容
CPU VisualVM 的 CPU 分析器选项卡中的 "total time (CPU)" 列是否包含 CPU 用于执行其他进程的时间?
例如,让我们考虑这样的情况:
- 我 运行 一个程序,其中我有一个名为 myMethod() 的方法,它可以进行一些计算。这个计算需要 2 秒 - 所以如果 CPU 什么都不做,只执行我的代码,那么执行这个方法需要 2 秒。
当我分析我的应用程序时,CPU 正在执行多个进程 - 我的进程和其他一些进程(例如,我有一个浏览器 运行ning,或类似的东西)。
CPU启动了myMethod(),执行了一段时间这个方法,然后开始执行浏览器的进程,停留了1秒,然后又回到执行myMethod( ) 并完成了它。所以在 myMethod() 开始和结束之间已经过去了 3 秒,但只有 2 秒用于执行 myMethod()。
Java VisualVM 的 CPU 分析器选项卡的 "total time (CPU)" 列中显示的时间是 2 秒还是 3 秒?
报告 CPU 时间时,探查器将报告 JVM 本身花费的时间(可能包括 "system" 时间)。
CPU 浏览器使用的时间不应计入 CPU 时间列。如果是 / 则列标题 应该 是 "elapsed" 或 "real" 时间。
如果您对此没有信心,请编写一些简单的测试程序并对其进行分析:
查看当您的应用程序调用
Thread.sleep(....)
时探查器报告的内容
当您的应用程序从
System.in
. 读取一行时发生阻塞,请查看探查器报告的内容