java - Websphere 内存不足问题 - 8.0.0.12 - com.ibm.xml.xlxp2.scan.util.SymbolMap

标签 java web-services jakarta-ee out-of-memory websphere

我们使用 websphere 8.0.0.12 来托管我们的 JAX-WS Web 服务(使用 CXF)。 websphere 的内存每天都在增加,每 5 到 6 天就会出现一次“内存不足”(每天约 300,000 个请求)。堆空间设置为 1 GB。

使用 eclipse MAT 检查堆转储后,我们发现以下类占用了近 800 MB 的堆

Problem Suspect 1
The class "com.ibm.xml.xlxp2.scan.util.SymbolMap", loaded by "<system class loader>", occupies 731,574,968 (66.22%) bytes. The memory is accumulated in one instance of "com.ibm.xml.xlxp2.scan.util.Symbol[]" loaded by "<system class loader>".

Keywords
com.ibm.xml.xlxp2.scan.util.Symbol[]
com.ibm.xml.xlxp2.scan.util.SymbolMap

  Problem Suspect 2
One instance of "com.ibm.xml.xlxp2.scan.util.DataBuffer" loaded by "<system class loader>" occupies 134,217,792 (12.15%) bytes. The memory is accumulated in one instance of "byte[]" loaded by "<system class loader>".

Keywords
com.ibm.xml.xlxp2.scan.util.DataBuffer
byte[]

我浏览了一些指向 websphere 补丁的帖子。

有人可以解释一下 SymbolMap/DataBuffer 的用途以及解决此问题的方法吗? (补丁除外)。

最佳答案

您可以在 jvm 上设置自定义属性。

com.ibm.xml.xlxp2.scan.util.SymbolMap.maxSymbolCount=64000

IBM StAX 是一个解析器实现,可处理 XML 文档以实现高效使用。它扫描 XML 文档并缓存 XML 符号。缓存的增长可能会导致内存不足问题。 64000 是符号映射大小的建议值。该系统属性由 APAR PI08415 引入。另外this可能有助于理解 IBM stAX 相关的内存不足问题。

关于java - Websphere 内存不足问题 - 8.0.0.12 - com.ibm.xml.xlxp2.scan.util.SymbolMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38120678/

相关文章:

php - wsdl 中的 'any' 是什么以及我如何使用 php 调用 wsdl 函数?

javascript - 单击菜单查看文件选项窗口

java - 安卓 JSONObject : add Array to the put method

java - 使用 GSON 将 java.io.File 解析为 JSON

java - super 菜鸟帮助 ~ MouseEvent/Frame

java - 提出多部分请求不起作用

java - 组合 JPA、EJB 和 JSF 托管 bean 的首选设计模式是什么?

java - 错误:Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug

java - 更新小部件和 Activity 的数据

java - 使用 QName 的目的