使用visualvm分析码头非常慢

时间:2012-10-29 10:16:51

标签: profiling jetty visualvm

我在Jetty上运行了一个wicket + spring + hibernate应用程序。当我使用VisualVM(jdk 1.7.0_9)启动CPU分析时,它首先使用控制台打印停顿几分钟:

Profiler Agent: 250 classes cached.
Profiler Agent: 250 classes cached.

这些行重复了大约20次,然后VisualVM说它已经开始实施并且检测了大约8000种方法。

此后,我点击我的网络应用程序上的一个按钮,然后应用程序完全挂起几分钟,同时控制台打印出以下行:

Profiler Agent: Redefining 100 classes at idx 100, out of total 336 

在此之后,我获得了分析结果,但它们相当无用,因为几乎99.6%的时间花在

sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run()

这使得VisualVM完全不可用。有什么猜测可能是罪魁祸首吗?

我正在运行Jetty 8.1.2.v20120308

2 个答案:

答案 0 :(得分:14)

我建议先从CPU采样开始。一旦你知道出了什么问题,就可以切换到分析以获取详细信息。请务必阅读Profiling With VisualVM, Part 1Profiling With VisualVM, Part 2以获取有关如何设置Jetty服务器配置文件的更多信息。

答案 1 :(得分:6)

答案是缩小正在检测的类的范围。

单击分析器中的设置选项,然后查看“不分析类”或“仅分析类”。请务必排除您不想检查的第三方库。例如,我在我的应用程序中使用了Jython,并且探查器试图检测数千个类,可能包括在运行时动态生成的类(不好)。