Search code examples
javaweb-servicesjakarta-eeout-of-memorywebsphere

Websphere out of Memory Issue - 8.0.0.12 - com.ibm.xml.xlxp2.scan.util.SymbolMap


We are using websphere 8.0.0.12 to host our JAX-WS webservices (using CXF) . The memory of websphere is increasing daily and we are ending up with an "Out of Memory" every 5 to 6 days ( ~ 300,000 requests per day). The heap space is set to 1 GB.

Upon checking the heap dump using eclipse MAT, we see that the below classes occupy almost 800 MB of heap

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[]

I have gone through some posts which point towards a patch for websphere.

Could anyone please explain the purpose of SymbolMap/DataBuffer and way to fix this issue. (except for the patch).


Solution

  • You can set a custom property on jvm.

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

    IBM StAX is a parser implementation which process XML documents for efficent usage. It scans XML documents and caches XML symbols. Growth of caching may cause out of memory issues. 64000 is a recommended value for symbol map size. This system property is introduced by APAR PI08415. Also this may help understanding IBM stAX related out of memory issues.