使用visualvm分析码头非常慢

ver*_*tti 11 profiling visualvm jetty

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

Profiler Agent: 250 classes cached.
Profiler Agent: 250 classes cached.
Run Code Online (Sandbox Code Playgroud)

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

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

Profiler Agent: Redefining 100 classes at idx 100, out of total 336 
Run Code Online (Sandbox Code Playgroud)

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

sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run()
Run Code Online (Sandbox Code Playgroud)

这使得VisualVM完全不可用.有人猜到这可能是罪魁祸首吗?

我正在运行Jetty 8.1.2.v20120308

Tom*_*rka 14

我建议先从CPU采样开始.一旦你知道出了什么问题,就可以切换到分析以获取详细信息.请务必阅读使用VisualVM进行概要分析,第1部分使用VisualVM进行概要分析,第2部分以获取有关如何设置Jetty服务器概要分析的更多信息.

  • 我更新了链接。 (2认同)

Pat*_*yer 6

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

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