ws-kandula-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Prakash C Rao (JIRA)" <>
Subject [jira] Created: (AXIS2-4742) Axis2 1.5.1 memory issues when invoked stub client in multiple threads
Date Tue, 15 Jun 2010 18:41:24 GMT
Axis2 1.5.1 memory issues when invoked stub client in multiple threads

                 Key: AXIS2-4742
             Project: Axis2
          Issue Type: Bug
          Components: adb
    Affects Versions: 1.5.1
         Environment: Windows XP professional, service hosted in tomcat 5.0.28 & Tomcat
6.0.26, JRE version 1.5.0_14, 32 bit OS, Total Physical Memory - 4 GB, Total RAM - 1.58 GB,Total
VM - 2.00 GB,Available VM - 1.96 GB,Processor - x86 family 6 Model 2494 Mhz
            Reporter: Prakash C Rao
            Priority: Blocker
             Fix For: 1.6

We are using Axis 1.4 library for our current production system and we are hitting out of
memory due to de-serialization bug in Axis 1.4.

Later we found Apache has stopped working on Axis1 generation (1.4 is the last version) and
has moved to Axis2 generation. I did lot of reading and found good things (especially on memory
footprint) about Axis2 and we made a decision to move to Axis2 1.5.1. Before using this for
our product, we did a small POC on Axis2 1.5.1 confirm what is being claimed (as far as memory
foot print is concerned) is really true. 

In my POC I wrote a sample application and I invoked 4 simple service APIs in multiple threads.
I see memory growing drastically up to 900MB - 1GB and lot of GC happening. And even after
full GC the memory stays up for some duration. I read lot of articles on internet about Axis2
and came to know that there were memory leak issues in Axis2 1.4 which was fixed in Axis2
1.5 but I still see memory issues in Axis2 1.5.1. I also did POC with our product code using
Axis2 1.5.1 and I see same results (high memory usage) when I invoke stub using multiple threads.

>From the articles I came to know that stub is not thread safe but I've made sure thread
safety for stub creation. I'm creating only one configuration context object and I'm creating
new stub for each invocation which uses that configuration context. After the invocation,
I'm cleaning up the stub & transport to ensure all cleanups are being done properly. I'm
also caching http client for better performance and setting auto release flags for proper
cleanup. I've followed all best practices that I Amila has suggested (thanks very much Amila)
in his various blogs. I also debugged Axis2 1.5.1 code to see usage of various flags that
I've set in the code. In spite of all this I see lot of memory usage. In fact I see better
results in Axis 1.4 as far as memory is concerned. 

I'm attaching the source code for client (rl.txt -> rename to rl.bat starts the client
in various threads), service, GC log & profiling report. From the profiling I see huge
references to the below objects that's being mentioned in


One of Amila's blog talks about caching stub object but I'm afraid of socket timeout if I
use the same stub for longer period of time (hence I'm creating new stub each invocation and
cleaning up after call is done).

Could you please help me out in this regard? 

Btw, I should really thank Amila for most of his blogs on Axis2 (2 of them I've listed below).
It was really helpful for me.

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message