Clear out references to the handler before putting the XMLReader back in the cache. This is to promote garbage collection.
This commit is contained in:
parent
6ad5458da9
commit
ee31d47d1d
@ -45,8 +45,13 @@ public class SimpleSAX {
|
|||||||
XMLReader reader = cache.createXMLReader();
|
XMLReader reader = cache.createXMLReader();
|
||||||
reader.setContentHandler(xmlhandler);
|
reader.setContentHandler(xmlhandler);
|
||||||
reader.setErrorHandler(xmlhandler);
|
reader.setErrorHandler(xmlhandler);
|
||||||
reader.parse(source);
|
try {
|
||||||
cache.releaseXMLReader(reader);
|
reader.parse(source);
|
||||||
|
} finally {
|
||||||
|
reader.setContentHandler(null);
|
||||||
|
reader.setErrorHandler(null);
|
||||||
|
cache.releaseXMLReader(reader);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static class XMLReaderCache {
|
private static class XMLReaderCache {
|
||||||
@ -66,6 +71,9 @@ public class SimpleSAX {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void releaseXMLReader( XMLReader reader ) {
|
private void releaseXMLReader( XMLReader reader ) {
|
||||||
|
// force references to null to encourage garbage collection.
|
||||||
|
reader.setContentHandler(null);
|
||||||
|
reader.setErrorHandler(null);
|
||||||
queue.offer( reader );
|
queue.offer( reader );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user