我的 Java 应用程序中 Jar 文件访问存在高争用

Fra*_*ari 0 java xml profiling contention

我们开发一个基于 JMS 的应用程序,该应用程序从 JMS 队列接收 XML 格式的消息。该应用程序部署在 Weblogic 服务器 (12c) 上。

速率约为 400-500 条消息/秒,我们的性能很差,并且 JMS 队列上的积压情况不断累积。

我尝试使用Java Mission Control来分析应用程序,在记录一分钟的系统活动后,我发现 Weblogic 类加载器对 Zip (Jar) 文件的访问阶段存在很多争用。

当检测到争用时,我的 JMS MDB 执行的操作是使用 JAXB 解组 XML 文件内容。

关于可能导致该问题的原因有任何提示吗?

Mic*_*Kay 5

一种可能性是您正在重复调用 JAXP 工厂方法(例如 )XMLParserFactory.getInstance(),其中涉及搜索类路径并检查 JAR 文件。这些方法仅在应用程序初始化时调用一次。(除了重用工厂之外,重用 XML 解析器本身也很有好处 - 无论如何,曾经是这样的情况。)