XmlRpc.parse() initializes the "cdata" field and then clears it ( by calling 
setLength(0) ) upon subsequent calls to parse().  This results in a memory leak 
between calls to parse(), since the "cdata" field persists as long as the XmlRpc 
object.  In my particular case, a large logfile was being passed as a parameter in a 
response, and the "cdata" leak was many megs in size - it ended up consuming all the 
memory available to my client application.

I fixed it (somewhat aggressively) by changing the line in XmlRpc.java that reads:
                parser.parse (new InputSource (is));
to:
                try
                {
                        parser.parse (new InputSource (is));
                }
                finally
                {
                        cdata = null;
                }

However, I am not a developer for this project - would someone more important please 
consider this change for your source code?

thanks,
Glen Lewis

Reply via email to