My Oracle Support Banner

Memory Leak Observed in MCorrelationIds [ConcurrentHashMap] Present in Class PortalContext (Doc ID 2660375.1)

Last updated on JUNE 02, 2020

Applies to:

Oracle Communications Billing and Revenue Management - Version and later
Information in this document applies to any platform.


An user is running a standalone java application with Drools for rules management. Billing and Revenue Management (BRM) 7.5 Connects to this application to execute the rule conditions. PortalContext is part of pcm.jar.

The user observed memory leak in the ConcurrentHashMap mCorrelationIds object. This mCorrelationId is a static object. This concurrent hashmap object holds the correlationid for each request. Over a period of time, the hashmap size grows very big and it contains more than a million entries in hashmap.

The custom application slowed down and came to a standstill, the user had to restart the java application to bring it to normal behavior.  From the heap dumps which has been captured when the issue occurred and observed, this particular object was holding almost 95% of the old heap. As observed, the size of this particular hashmap mCorrelationIds is keeping on increasing even after multiple full Garbage Collectors (GCs).



  1. SMS_JS_Rules is a standalone java process runs inside BRM Enterprise Manager (EM).
    This SMS_JS_Rules is java application mainly uses pcm.jar and pcm_ext.jar along with Drools.
  2. SMS_JS_Rules is only used for Rules Management.
  3. BRM will invoke the rules running inside SMS_JS_Rules process.
    SMS_JS_Rules does not initiate connection to BRM. Only BRM connects to SMS_JS_RULES
  4. Python BRM scripts executed to have some of the rules running inside SMS_JS_Rules process.
  5. Three heap dumps took in random intervals. Say after 30 mins or after 1 hour intervals.
  6. Multiple heapdumps compared and observed that the static object mCorrelationId present in PortalContext object grows significantly in size.
    The full GCs also does not collect the memory utilized by the map.
  7. This object keeps storing each of the requests correlation ID into the map and those entries were not being cleared.


To view full details, sign in with your My Oracle Support account.

Don't have a My Oracle Support account? Click to get started!

In this Document

My Oracle Support provides customers with access to over a million knowledge articles and a vibrant support community of peers and Oracle experts.