I am having a very strange behavior in JBoss, and I want to take advantage of the collective wisdom of such a rush yourself Are there. We are using Jbbs (4.0.4 I think) to serve SOB calls. In fact, this glory is used as RPC server, and no more. When we send our requests to 20+ customers at the same time, we are stepping out of memory. Incoming requests at least request (proper SOAP) and returning the result packet is which is essentially a long SOAP string (and XML content string included) Yes, do not ask me to know that this sub-totals. I have detected an example of org.jboss.axis.message.SAX2EventRecorder leaks that holds 4 million objects (strings and integers). Now, the longest response also does not take 4 MB data. Requests are smaller than all 40K. There is something wrong, but I can not find any documents on the web. Can anyone tell me what is used for the recorder? And how can I get rid of it? Or can it be configured to be less memory-hungry? Any help is appreciated. Update: To illustrate - I've dumped the memory, and the dump shows an array or 4,000,000+ objects, strings and integers. The array is owned by a org.jboss.axis.message.SAX2EventRecorder which in turn have these people: org.jboss.axis.message.SOAPEnvelopeAxisImpl@0x19c31fd8 (141 bytes) field recorder org .jboss.axis.message.RPCParamElementImpl @ 0x19c32260 (123 bytes): field recorder org.jboss.axis.message.SOAPBodyAxisImpl@0x19c32160 (121 bytes): field recorder org.jboss.axis.message.RPCElement@0x19c321e0 (124 bytes) : field Recorder org.jboss.axis.encoding.DeserializationContextImpl@0x19c332f0 (67 bytes) field recorder org.jboss.axis.message.SAX2EventRecorder$objArrayVector@0x19c33398 (24 bytes) region $ 0 Another Dytn: powers which are found "powers-to-solution": Remember that we are making the switch to 64-bit. Hurray
Run with JVM Arg -XX: -HeapDumpOnOutOfMemoryError. When you get out of memory, it will give you a heap dump. After this you can analyze the heap dump with the jet device (it comes with your JDK). Alternatively, to request a heap dump at any time by using the JConsole tool (which comes with your JDK) memory management MBeans. It will let you know that 4 million objects can actually use them, which can give you information about why the software is not releasing that memory. EDIT: It seems that you are not the only one with this issue. Two bug reports have been registered with Axis Also see, some interesting about it Information is, methods of deserialization and arbitration in its effect. Which version of Axis are you using?
Comments
Post a Comment