[XOM-interest] XOM memory usage
Marcus Downing
marcus at minotaur.it
Wed Sep 26 09:24:12 EDT 2007
I've successfully used XOM on many reasonable-sized documents. Now I
need to parse a 10Mb xml document, and the memory usage is just too
much.
I manage to process about 90% of the elements before hitting an
OutOfMemoryError, which suggests that something is a being assigned
and held onto as each element is parsed. Is there anything I should be
doing to minimise the memory use or release elements which are no
longer needed?
A simplified version of my code, with almost everything removed for clarity:
// document
FileInputStream in = new FileInputStream(file);
Builder builder = new Builder();
Document document = builder.build(in, "");
Element rootElement = document.getRootElement();
Element resultSetElement =
rootElement.getFirstChildElement("RESULTSET",
"http://www.filemaker.com/fmpxmlresult");
// column headings
Element metaDataElement = rootElement.getFirstChildElement("METADATA",
"http://www.filemaker.com/fmpxmlresult");
Elements fieldElements = metaDataElement.getChildElements("FIELD",
"http://www.filemaker.com/fmpxmlresult");
fieldNames = new String[fieldElements.size()];
for (int i = 0, n = fieldElements.size(); i < n; i++) {
Element fieldElement = fieldElements.get(i);
fieldNames[i] = fieldElement.getAttributeValue("NAME");
}
// data
Elements rows = resultSetElement.getChildElements("ROW",
"http://www.filemaker.com/fmpxmlresult");
int size = rows.size();
for (int i = 0; i < size; i++) {
Element rowElement = rows.get(i);
parseRow(rowElement);
}
--
Marcus Downing
More information about the XOM-interest
mailing list