3

目前,我正在尝试清除我的 JSF/PrimeFaces Web 应用程序中的瓶颈。为此,我安装了 VisualVM 及其 GlassFish 插件。

我无法通过 JMX 显式“分析”,但可以生成“采样”输出。但是,此输出显示了名为 的操作中的几乎全部负载$Proxy245.invoke()

VisualVM 采样输出

我自己的操作 (ch.diction.*) 和 SQL 交互逻辑 (com.mysql.jdbc.*),我一开始怀疑是瓶颈,但似乎对这种性能不足没有太大贡献。

显示的页面是一个 PrimeFaces 数据表,其中包含数百条分页记录。记录的数量确实会显着影响性能,如果不是唯一的话。

所以我的问题是:我怎样才能找出背后$Proxy245.invoke()的原因,以便确定这种情况下的真正瓶颈?

提前感谢您的建议和问候

帕斯卡

4

1 回答 1

1

$Proxy245 是某些AOP框架生成的代理类,在您的情况下,不清楚是哪一个。它用于拦截方法调用。由于它是生成的,因此您将找不到实际的来源,因为没有任何来源。我建议您使用 VisualVM(线程选项卡)生成一个线程转储并检查堆栈跟踪我很确定您会找到这种方法(可能不是第一次尝试,而是进行几次转储)。有了这个,你可以找到最后调用这个(代理)方法的方法链。

还要尝试对应用程序进行分析,而不仅仅是 Sample(Profiler 选项卡)。使用分析器,您可以查明这些是对同一方法的多次调用,还是只是一个不想结束的长时间调用。

于 2013-04-09T17:13:15.987 回答