High heap utilization in ExtensionManagerBuses

Solution Verified - Updated

Environment

  • JBoss Enterprise Application Platform (EAP) 6

Issue

  • We have high heap utilization and the heap dump shows considerable heap usage in org.apache.cxf.bus.extension.ExtensionManagerBus. These trace back to BusFactory's threadBusses WeakHashMap

Resolution

  • Increase heap to meet demands of pool sizes and resulting Bus counts.
  • Decrease thread counts or switch your web connectors to use an executor with a keepalive-time set to result in the reclamation of idle threads and their corresponding ExtensionManagerBus.

Root Cause

  • A bus is created and cached for every thread that uses it. The buses would be freed from this cache if their corresponding thread ever dies and is collected. The web default pooling behavior though is to never reclaim threads so those buses will persist indefinitely along with their threads. The number of buses would become bounded by the web pool size.
Components
Category

This solution is part of Red Hat’s fast-track publication program, providing a huge library of solutions that Red Hat engineers have created while supporting our customers. To give you the knowledge you need the instant it becomes available, these articles may be presented in a raw and unedited form.