We've been having possibly similar problems, and traced it into axis. Apparently, axis does a lot of short-term object creation during serialization, which can result in OutOfMemoryExceptions for reasonably large data sets (30M), even with -Xmx set to values up to 1.5G. In a profiler we can see that axis has a major sawtooth profile for its memory usage while it serializes, which results in the OutOfMemoryException.


We're planning to fix the issue by sending our data as an attachment, avoiding the overhead of the axis serialization code.

I don't know whether message.getContentLength() actually tries to deserialize the stream or not -- you'd think it would just read the header. (I'm assuming you're using POST, as GET probably wouldn't give you enough data to cause the OOM.)

--Peter

On May 13, 2004, at 3:08 PM, Nelson Minar wrote:

When the request comes into the Handler (i'm using the axis stable
version 1.1), when i try to do an Long length =
message.getContentLength(), my Tomcat3 server prints out a nice
OutOfMemoryException, so i can't discard the long messages.

Do you know about the -Xmx flag to the JVM to increase the amount of memory it is allowed to access? This is not specific to Tomcat or Axis, but more a general Java thing.



Reply via email to