RESTful Management Services Leads to Memory Leak in weblogic.rmi.internal.OIDManager

(Doc ID 2263031.1)

Last updated on AUGUST 10, 2017

Applies to:

Oracle WebLogic Server - Version 10.3.6 to 12.2.1.2.0
Information in this document applies to any platform.

Symptoms

After enabling RESTful Management Services, heap usage goes up over time, A heap dump shows the following:

 

5,050 instances of "javax.management.remote.rmi.RMIConnectionImpl", loaded by
"<system class loader>" occupy 11,455,520 (17.90%) bytes. These instances are
referenced from one instance of "java.lang.Object[]", loaded by "<system
class loader>"

Keywords
javax.management.remote.rmi.RMIConnectionImpl
java.lang.Object[]

Class Name
-----------------------------------------------------
weblogic.work.ExecuteThread @ 0xc3d50f68 [STANDBY] ExecuteThread: '5' for queue: 'weblogic.kernel.Default (self-tuning)'
Busy Monitor, Thread'- contextClassLoader, defaultContextClassLoader, contextClassLoader
sun.misc.Launcher$AppClassLoader @ 0xc19e33e0
  '- classes java.util.Vector @ 0xc23bc1a0
    '- elementData java.lang.Object[20480] @ 0xc23c8988
      '- [2615] class weblogic.rmi.internal.BasicServerRef$OIDManagerMaker@ 0xc02cd510
        '- SINGLETON weblogic.rmi.internal.OIDManager @ 0xc02cd570
          '- identityTable java.util.Collections$SynchronizedMap @0xc02cd588
            '- m java.util.IdentityHashMap @ 0xc02cd5a8
              '- table java.lang.Object[16384] @ 0xc323dc58
                |- [1674] javax.management.remote.rmi.RMIConnectionImpl
                |- [1476] javax.management.remote.rmi.RMIConnectionImpl
                |- [7374] javax.management.remote.rmi.RMIConnectionImpl
                |- [8112] javax.management.remote.rmi.RMIConnectionImpl
                ...
                |- [2876] javax.management.remote.rmi.RMIConnectionImpl
                |- [44] javax.management.remote.rmi.RMIConnectionImpl
                |- [7166] javax.management.remote.rmi.RMIConnectionImpl
                '- Total: 25 of 5,050 entries; 5,025 more

 

This issue can be easily duplicated with following similar script,

export myCookieFile='/tmp/ck123.txt'
for i in {1..100000}; do curl -v -c ${myCookieFile} -b ${myCookieFile} --user weblogic:welcome1 -H X-Requested-By:MyClient -H Accept:application/json -X GET http://wl01cn07:7001/management/tenant-monitoring/servers; done

 

Changes

 

Cause

Sign In with your My Oracle Support account

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

My Oracle Support provides customers with access to over a
Million Knowledge Articles and hundreds of Community platforms