From ee31d47d1dd9764e4daf3f03d775c6f93b2b0f74 Mon Sep 17 00:00:00 2001 From: Kevin Ruland Date: Tue, 25 Sep 2012 16:53:53 +0000 Subject: [PATCH] Clear out references to the handler before putting the XMLReader back in the cache. This is to promote garbage collection. --- .../net/sf/openrocket/file/simplesax/SimpleSAX.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/core/src/net/sf/openrocket/file/simplesax/SimpleSAX.java b/core/src/net/sf/openrocket/file/simplesax/SimpleSAX.java index 6f9bc2eb2..2053d42e2 100644 --- a/core/src/net/sf/openrocket/file/simplesax/SimpleSAX.java +++ b/core/src/net/sf/openrocket/file/simplesax/SimpleSAX.java @@ -45,8 +45,13 @@ public class SimpleSAX { XMLReader reader = cache.createXMLReader(); reader.setContentHandler(xmlhandler); reader.setErrorHandler(xmlhandler); - reader.parse(source); - cache.releaseXMLReader(reader); + try { + reader.parse(source); + } finally { + reader.setContentHandler(null); + reader.setErrorHandler(null); + cache.releaseXMLReader(reader); + } } private static class XMLReaderCache { @@ -66,6 +71,9 @@ public class SimpleSAX { } private void releaseXMLReader( XMLReader reader ) { + // force references to null to encourage garbage collection. + reader.setContentHandler(null); + reader.setErrorHandler(null); queue.offer( reader ); } }