Meaningless Drivel is fun!
The moose likes XML and Related Technologies and the fly likes Streaming XML Reader fills up memory? Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Engineering » XML and Related Technologies
Bookmark "Streaming XML Reader fills up memory?" Watch "Streaming XML Reader fills up memory?" New topic

Streaming XML Reader fills up memory?

Jonatan Samoocha

Joined: Nov 20, 2001
Posts: 16
After encountering a memory leak I stripped down my code to the following minimal fragment that reproduces the problem:

The file "import2.xml" has a size of approximately 15Mb. When running this code, the following output (and stack trace) is written:

Using a heap dump analyzer, I found out that some char[] internal to that weblogic parser was filled with the contents of the whole file. There are 2 strange things in this situation:

1. Why is the instance using the weblogic.xml.stax.* package internally? Is this configured somewhere? Even stranger, I couldn't find any of the weblogic.xml.stax.* classes on my classpath.
2. Why is the whole file loaded in memory while the code iterates through it event by event? Do I need to configure anything to reduce some internal buffer size, and hence the overall memory footprint?

Many thanks,

William Brogden
Author and all-around good cowpoke

Joined: Mar 22, 2000
Posts: 13036
1. I suspect that somewhere there must be a system property that specifies the weblogic.xml ... package for the default parser.

A normal SAX parser would not be so wasteful.


Jonatan Samoocha

Joined: Nov 20, 2001
Posts: 16
The problem seems to be classpath-related: when the above code is moved to an empty project with just the JAXB jars on the classpath, everything runs ok. I'll report about the offending classes if able to find them.
I agree. Here's the link:
subject: Streaming XML Reader fills up memory?
It's not a secret anymore!