If your webapp comes with Xerces-J (for instance: xercesImpl-2.8.1.jar is in WEB-INF/lib), when org.apache.tomcat.util.digester.Digester.getXMLReader() is executed during webapp start (to read the TLDs) the XMLReader saved into reader field is an instance of class loaded by the webapp class loader (in fact, org.apache.tomcat.util.digester.Digester.getFactory() causes the JDK to find a factory implementation in xercesImpl-2.8.1.jar, which in turn returns a Parser implementation from xercesImpl-2.8.1.jar). However, when you stop your webapp the reader field of the Digester is not reset, holding a strong reference that prevents the webapp class loader from being garbage collected. This is something very similar to what is happening in bug #46221.
*** This bug has been marked as a duplicate of bug 45933 ***