My Oracle Support Banner

Healthcare Transaction Base (HTB) 6.0 Garbage Collector Overhead Issue (Doc ID 1385040.1)

Last updated on JULY 13, 2023

Applies to:

Oracle Healthcare Transaction Base - Version 6.0 and later
Information in this document applies to any platform.

Goal


On Oracle Healthcare Transaction Base 6.0 how can one debug/overcome the "java.lang.OutOfMemoryError: GC overhead limit exceeded"
when there is a high load on the system?

Note: The "java.lang.OutOfMemoryError: GC overhead limit exceeded" error was raised on a standalone OC4J instance
(not on Oracle Applications side).

User was doing a load test using Jmeter sending SOAP requests to an OC4J node (2 JVM's with -Xmx2048m)


=== ISSUE ===
======================================================================================================================================
User is getting a "java.lang.OutOfMemoryError: GC overhead limit exceeded" because of the fact that more than 88% of the heap
dump analyzed it's used by "oracle.jdbc.pool.OraclePooledConnection" instances.

The "java.lang.OutOfMemoryError: GC overhead limit exceeded" message will be seen if too much time is being spent in garbage
collection: if more than 98% of the total time is spent in garbage collection and less than 2% of the heap is recovered.

The application is connecting through a .dbc file (using APPS tech stack jdbc driver) to APPS database for authorization
purposes and also using an internal OC4J datasource.

We believe that the jdbc connections are not released or the setup is incorrect since it's occupying so much space on the heap.
======================================================================================================================================


=== Heap Dump Analyzed ===
======================================================================================================================================
a) was showing 65 instances of "oracle.jdbc.pool.OraclePooledConnection",
loaded by "oracle.classloader.PolicyClassLoader @ 0x3421b5d0" occupy 1,677,068,024 (87.93%) bytes.

b) top elements included:


total of empty chars = 396911538 bytes = 379 MB
Empty chars may come from bad usage of prepared statements (code issue) or from prealocated jdbc buffer (wrong configuration).

c) oracle.jdbc.pool.OraclePooledConnection objects range from 70Mb to 20Mb each
======================================================================================================================================



=== TECH STACK ===
======================================================================================================================================
Oracle Applications version : 12.0.4
RDBMS version - oracle11g enterprise edition release 11.1.0.7.0 - 64bitproduction
OC4J java -fullversion = "1.6.0_20-b02"
Oracle Application Server SOA Suite 10.1.3.1.0 with Oracle Application Server PatchSet 10.1.3.4.0
OS - 32-bit Red Hat Enterprise 5
======================================================================================================================================

Solution

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
Goal
Solution
References


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