Skip to Main Content

Integration

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Interested in getting your voice heard by members of the Developer Marketing team at Oracle? Check out this post for AppDev or this post for AI focus group information.

Thread Local Area and OutOfMemoryError: nativeGetNewTLA

822988Dec 10 2010 — edited Oct 3 2011
I'm running a Java server with JRockit 1.5.0. This is an "event processing" application: it reads events on a socket (SNMP port 162) and processes them by saving them to a database and then forwarding a JMS message (this is a client to a JBoss 4.2.2 server). So there are a lot of threads and a lot of socket I/O, between the incoming SNMP traps and the outgoing JDBC and JMS communication.

I recently started seeing some OutOfMemory errors in the logs for this process like the following:

java.lang.OutOfMemoryError: allocLargeObjectOrArray - Object size: 9616, Num elements: 4798
java.lang.OutOfMemoryError: mmAllocArray - Object size: 192, Num elements: 44
java.lang.OutOfMemoryError: nativeGetNewTLA
java.lang.OutOfMemoryError: allocLargeObjectOrArray - Object size: 65552, Num elements: 65536


I googled around and found the following as a way to resolve this issue:

-XXlargeObjectLimit=70k -XXtlaSize:min=70k,preferred=96k

I added these options, but still see some OutOfMemoryErrors. Seems like the large object and malloc complaints are gone, this time there are only complaints about "nativeGetNewTLA".

All processing stops once these OutOfMemoryErrors occur; nothing more is written to the database, and no more messages are written to JMS.

What can I do to fix this? Raise the tlaSize more? If so, how do I know how much to raise it to? Is there any good documentation on what this TLA feature is and under what conditions it starts operating? The total system that I work on consists of a number of Java processes, all doing a combination of network I/O, database access, and JMS, but this is the only process where I've seen these OutOfMemoryErrors occur.

I'd like to understand more about how Thread Local Areas work, as well as how to fix this problem.

Any help would be much appreciated...

Version information:

java -version
java version "1.5.0_19"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_19-b02)
BEA JRockit(R) (build R27.6.5-32_o-121899-1.5.0_19-20091001-2113-linux-ia32, compiled mode)

Comments

849865
Have you seen this thread?: 1140785

Also, maybe the "Best Practices" JRockit documentation can help you tune your JVM. Have a look if you haven't come across it yet: [http://download.oracle.com/docs/cd/E13150_01/jrockit_jvm/jrockit/geninfo/diagnos/bestpractices.html]

Hope something helps.
826517
Hello All,

We are also facing the same issue with JRockit R27.6 and RHEL 5 and Weblogic 10.3.1. Our Production Environment is coming down every week because of this and we have raised an Oracle Support Ticket also, but that is taking its own time.

We have set our parameters as below
-jrockit -Xms1024m -Xmx1024m -XXlargeObjectLimit=128k -XXtlaSize:min=128k,preferred=512k

However now every week in all the environments (including DEV) we are getting "java.lang.OutOfMemoryError: nativeGetNewTLA" issues.

Please suggest some solutions !
Vivekvp
Hello,

I am seeing this from our Collaboration module in Web Center Interaction 10.3.0:

Exception in thread "PMB Message Receiver" java.lang.OutOfMemoryError: allocLargeObjectOrArray - Object size: 65552, Num elements: 65536

Using:

INFO | jvm 1 | 2011/09/16 14:52:51 | Initializing WrapperManager native library.
INFO | jvm 1 | 2011/09/16 14:52:51 | Java Executable: E:\bea\alui\common\jre\1.5.0_32\bin\java.exe
INFO | jvm 1 | 2011/09/16 14:52:51 | Windows version: 5.2.3790
INFO | jvm 1 | 2011/09/16 14:52:51 | Java Version : 1.5.0_12-b04 BEA JRockit(R)
INFO | jvm 1 | 2011/09/16 14:52:51 | Java VM Vendor : BEA Systems, Inc.

However, nothing has changed in terms of configuration on the server. What would cause this now?

From what I read below - changing the options will not help.

Thanks,

V
Pierluigi Vernetto
IMHO tuning the JVM - apart bumping up the heap size - rarely helps in solving memory issues. With Java 6 the JVM is already self-tuning for most scenarios.

What really you should do when you have a OOM problem is to take a heap dump (-XX+HeapDumpOnOutOfMemory) and analyze it to understand which objects (normally there is only 1 class of object responsible for the trouble) are taking up most heap space. Use yourkit, eclipse mat, visualvm or any other tool you like. in any case, you need tools, you will get nowhere using only your bare hands.
René van Wijk
This is probably due to the fragmentation of the heap.

As more and more garbage collection are run, the heap gets fragmented, which can result that
large objects cannot be allocated. Usually, after each full garbage collection a compaction is run, i.e.,
moving objects in order to create more contiguous space.

How is your JVM tuned, are you using the pausetime or deterministic scheme?

More information can be found here: http://middlewaremagic.com/weblogic/?p=7083
Vivekvp
Hello,

I have no idea how it is tuned. It is a black box to me. I use all default settings. A config file was modified in ptcollaborationserverd.bat:

rem Large Settings -- For large scale deployments with very heavy component usage
set JVM_1=-server -Xms400m -Xmx600m -Xmanagement:autodiscovery=true,authenticate=false,ssl=false,port=7091


For Collaboration - I did install JRockit Mission control.

Thanks for the article - I will take a look and get a better understanding.
1 - 6
Locked Post
New comments cannot be posted to this locked post.

Post Details

Locked on Oct 31 2011
Added on Dec 10 2010
6 comments
13,389 views