2012-10-30 40 views
0

我一直在分析我的swing应用程序是可视的,并进行大量重绘:通过调用repaint并在paintComponent()中进行绘制。VisualVM采样器CPU挥杆漆()奇怪

我正在使用VisualVM并使用采样器来查看哪些方法使用了很多cpu。

我的很多绘画方法都在列表的顶部,这并不令人意外。

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

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

是否有可能是什么东西(也许挥杆油漆模型)搞乱visualvm结果?

回答

1

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

此外,repaint管理器是在操作系统的摆布。操作系统可能会向repaint管理器发出请求,根据自己的需求更新其UI的部分,再次,这些不太可能每次都以完全相同的方式发生。

+0

感谢您的回复。我的窗口在每次鼠标移动时都会重新绘制,因此,每次visualvm在一段时间后都会获得整体平均值,同时大幅移动鼠标。这排除了其他影响。问题更多的是CPU使用量的差异,一次绘制方法x有70%,绘制方法y 10%,下一次方法x有20%,方法y有60%。大多数油漆方法都可以看到这些差异。这对我来说没有什么意义;-) –

+0

@T。 Akhayo的性能取决于刷新率(多少/每秒),最重要的是屏幕尺寸(极差在800x600和全高清之间) – mKorbel