Wls815/AIX: Java Core And Out Of Memory Due to Fragment (Doc ID 792960.1)

来源:互联网 发布:上古卷轴5淘宝服装合集 编辑:程序博客网 时间:2024/06/05 14:54
To BottomTo Bottom

In this Document


Symptoms

Cause

Solution


APPLIES TO:

Oracle Weblogic Server - Version 8.1 and later
IBM AIX on POWER Systems (64-bit)
z*OBSOLETE: IBM AIX5L Based Systems (32-bit)
IBM AIX Based Systems (64-bit)IBM AIX5L Based Systems (32-bit)

SYMPTOMS

Get OutOfMemory error even there are a lot of free spaces in JVM heap when using IBM JDK on AIX. We can see it from java core file looks like:

1TISIGINFO OUTOFMEMORY received

1STHEAPFREE Bytes of Heap Space Free: 43069110
1STHEAPALLOC Bytes of Heap Space Allocated: 7ffffa00

gc trace appear:

<AF[5007]: Allocation Failure. need 19660808 bytes, 233 ms since last AF> 
<AF[5008]: Allocation Failure. need 16155496 bytes, 388 ms since last AF>

CAUSE

The issue is caused by IBM JDK heap fragmentation.

SOLUTION

For a large Java application, the default kCluster space might not be sufficient to allocate all
classblocks. Use the -Xk and -Xp command-line options to specify kCluster and pCluster sizes.

For example: -Xknnnn

where nnnn specifies the maximum number of classes the kCluster will contain. -Xk instructs the JVM to allocate space for nnnn class blocks in kCluster.

GC trace data obtained by setting -Dibm.dg.trc.print=st_verify (for more information about GC tracing, see “Tracing” on page 310) provides a guide for the optimum value of the nnnn parameter. For example:: <GC(VFY-SUM): pinned=4265(classes=3955/freeclasses=0) dosed=10388 movable=1233792 free=5658>

The ’pinned/classes’ size is about the correct size needed for the -Xk parameter. You are recommended to add 10% to the reported value (3955). So, in this example, -Xk4200 would be a good setting.

The difference between pinned (=4265) and classes (=3955) provides a guide for the initial size of pCluster, although because each object might be different in size it is hard to predict the requirements for the pCluster and pCluster overflow options. You can specify the pCluster and pCluster overflow sizes by the -Xp command-line option:

-Xpiiii[K][,oooo[K]]

where iiii specifies the size of the initial pCluster in KB and oooo optionally specifies the size of overflow (subsequent) pClusters in KB. Default values of iiii and oooo are 16 KB and 2 KB respectively .

Where your application suffers from heap fragmentation, use GC trace and specify the -Xk option. If the problem persists, experiment with higher initial pCluster settings and overflow pCluster sizes.


0 0
原创粉丝点击