Lock Contention in the JRockit R28 Implementation of the Xerces DTDDVFactory.getInstance Method (Doc ID 1516694.1)

Last updated on JUNE 30, 2017

Applies to:

Oracle WebLogic Server - Version 11.1.1.3.0 to 11.1.1.3.0 [Release 11g]
Oracle JRockit - Version R28.2.0 and later
Information in this document applies to any platform.

Symptoms

A J2EE application running in WebLogic Server creates massive numbers of webservice clients for invoking remote webservices.
When concurrency increases, lock contention in com/sun/org/apache/xerces/internal/impl/dv/DTDDVFactory.getInstance is seen.

Locking thread:

"[ACTIVE] ExecuteThread: '87' for queue: 'weblogic.kernel.Default (self-tuning)'" id=148 idx=0x250 tid=29758 prio=5 alive, blocked, native_blocked, daemon
    -- Blocked trying to get lock: weblogic/utils/classloaders/ChangeAwareClassLoader@0x49a28a40[unlocked]
    at jrockit/vm/Threads.waitForUnblockSignal()V(Native Method)
    at jrockit/vm/Locks.fatLockBlockOrSpin(Locks.java:1411)[optimized]
    at jrockit/vm/Locks.lockFat(Locks.java:1512)[optimized]
    at jrockit/vm/Locks.monitorEnterSecondStageHard(Locks.java:1054)[optimized]
    at jrockit/vm/Locks.monitorEnterSecondStage(Locks.java:1005)[optimized]
    at weblogic/utils/classloaders/ChangeAwareClassLoader.loadClass(ChangeAwareClassLoader.java:37)[optimized]
    at com/sun/org/apache/xerces/internal/impl/dv/ObjectFactory.findProviderClass(ObjectFactory.java:395)[inlined]
    at com/sun/org/apache/xerces/internal/impl/dv/ObjectFactory.newInstance(ObjectFactory.java:350)[inlined]
    at com/sun/org/apache/xerces/internal/impl/dv/DTDDVFactory.getInstance(DTDDVFactory.java:59)[inlined]
    at com/sun/org/apache/xerces/internal/impl/dv/DTDDVFactory.getInstance(DTDDVFactory.java:44)[inlined]
    at com/sun/org/apache/xerces/internal/parsers/XML11Configuration.<init>(XML11Configuration.java:538)[inlined]
    at com/sun/org/apache/xerces/internal/parsers/XIncludeAwareParserConfiguration.<init>(XIncludeAwareParserConfiguration.java:125)[inlined]


Locked threads:

"[ACTIVE] ExecuteThread: '3' for queue: 'weblogic.kernel.Default (self-tuning)'" id=62 idx=0xf8 tid=24193 prio=5 alive, blocked, native_blocked, daemon
    -- Blocked trying to get lock: java/lang/Class@0x49a5b258[fat lock]
    at jrockit/vm/Threads.waitForUnblockSignal()V(Native Method)
    at jrockit/vm/Locks.fatLockBlockOrSpin(Locks.java:1411)[optimized]
    at jrockit/vm/Locks.lockFat(Locks.java:1512)[optimized]
    at jrockit/vm/Locks.monitorEnterSecondStageHard(Locks.java:1054)[optimized]
    at jrockit/vm/Locks.monitorEnterSecondStage(Locks.java:1005)[optimized]
    at com/sun/org/apache/xerces/internal/impl/dv/DTDDVFactory.getInstance(DTDDVFactory.java:44)[inlined]
    at com/sun/org/apache/xerces/internal/parsers/XML11Configuration.<init>(XML11Configuration.java:538)[inlined]
    at com/sun/org/apache/xerces/internal/parsers/XIncludeAwareParserConfiguration.<init>(XIncludeAwareParserConfiguration.java:125)[inlined]
    at com/sun/org/apache/xerces/internal/parsers/XIncludeAwareParserConfiguration.<init>(XIncludeAwareParserConfiguration.java:86)[inlined]
    at sun/reflect/GeneratedConstructorAccessor29.newInstance([Ljava/lang/Object;)Ljava/lang/Object;(Unknown Source)[optimized]
    at sun/reflect/DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)[optimized]
    at java/lang/reflect/Constructor.newInstance(Constructor.java:513)[optimized]
    at java/lang/Class.newInstance0(Class.java:355)[optimized]
    at java/lang/Class.newInstance(Class.java:308)
    at com/sun/org/apache/xerces/internal/parsers/ObjectFactory.newInstance(ObjectFactory.java:349)
    at com/sun/org/apache/xerces/internal/parsers/ObjectFactory.createObject(ObjectFactory.java:154)

This affects performance.

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