java - 为什么 VisualVM 中的 CPU 时间不加起来?

标签 java profiling visualvm

我在 VisualVM 中进行 CPU 分析,并在调用树中查看结果。

我有一些方法,总时间 X,花费在方法本身(Self time)和从方法调用的子程序中。

当我将在子例程中花费的时间加上 Self 时间时,为什么结果不等于在方法中花费的总时间?请注意,我说的不是毫秒,而是余额中少了 50% 或几分钟。

最佳答案

除了在调用树非常浅的小程序中,很难利用“自学时间”来学习任何有意义的东西。

纯 CPU 时间在任何类型的复杂程序中也不是很有用,这些程序很容易将大部分时间花在隐藏的 I/O 上。

最好看看

  • 包容的时间,而不是自己的时间
  • 挂钟,不是 cpu 时间
  • 百分比,而不是绝对秒数或毫秒数

更好的是获得行级分辨率,而不仅仅是函数或方法。

Here's the method我用来找出为什么要花费时间以及如何改进它,以及 here's an example用它做了什么。 Here's a more extensive问题的讨论。

关于java - 为什么 VisualVM 中的 CPU 时间不加起来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12140126/

相关文章:

java - Spring JPA 使用 LocalDateTime 获取 mongo 中某个范围(含)之间的日期

java - 如何从 Java 发送 html 电子邮件到 outlook

java - VisualVM:理想的堆内存使用图

java - 如何在VisualVM跨平台中获取配置文件选项卡?

java - 如何读取 RestEasy 拦截器中 POST/PUT 中的 json 进行验证

java - Android Jelly Bean 下拉设置/通知折叠功能用于什么?

linux - Golang : What is etext?

iphone - 使用启用优化的 XCode Instruments Time Profiler

python - Hotshot 错误地报告了简单的 Python 代码运行时间异常长

java - VisualGC 中的 "Compile Time"是什么?