VisualVM Sampler CPU swing paint() 怪异

Posted

技术标签:

【中文标题】VisualVM Sampler CPU swing paint() 怪异【英文标题】:VisualVM Sampler CPU swing paint() weirdness 【发布时间】:2012-10-30 20:48:07 【问题描述】:

我一直在分析我的摇摆应用程序,它是可视化的并且进行了大量的重绘:通过调用 repaint 并在 paintComponent() 中进行绘制。

我正在使用 VisualVM,并使用 Sampler 来查看哪些方法使用大量 cpu。

我的很多绘制方法都在列表的顶部,这并不奇怪。

但是可以看到一个奇怪的效果,每次我启动我的应用程序并启动一个 cpu 示例会话时,不同的绘制方法都位于热点的顶部。

我觉得这很奇怪,因为我在我的应用程序中使用完全相同的数据集。

是否有可能某些东西(可能是摇摆油漆模型)弄乱了 visualvm 结果?

【问题讨论】:

【参考方案1】:

您必须记住,Swing 是一个事件驱动的系统。这些事件不太可能以完全相同的顺序发生。

此外,重绘管理器受操作系统支配。操作系统可能会根据自己的要求向重绘管理器提出更新其 UI 部分的请求,同样,这些不太可能每次都以完全相同的方式发生。

【讨论】:

感谢您的回复。我的窗口在每次鼠标移动时都会重新绘制,因此每次疯狂移动鼠标时,visualvm 会在一段时间后获得总体平均值。这排除了其他影响。问题更多的是cpu使用量的差异,一次绘制方法x有70%,绘制方法y 10%,下一次方法x有20%,方法y有60%。在大多数油漆方法上都可以看到这些差异。这对我来说没有多大意义;-) @T. Akhayo 性能取决于刷新率(多少/每秒),最重要的是屏幕尺寸(极差在 800x600 和全高清之间)

以上是关于VisualVM Sampler CPU swing paint() 怪异的主要内容,如果未能解决你的问题,请参考以下文章

为啥在 VisualVM 中 CPU 时间大于挂钟时间?

在 VisualVM 中哪里可以找到时间(CPU)列?

VisualVM:CPU/内存分析器卡在“连接到目标 JVM...”

了解 visualvm 分析器中的 CPU 时间

远程启动 Java CPU Profiler,如 VisualVM,但自动化

VisualVM 未显示任何调用 CPU 性能分析的方法