[jdom-interest] Namespaces accumulation bug in SAXHandler

Jason Hunter jhunter at servlets.com
Tue Jun 12 22:25:22 PDT 2001


Are you using the latest code in CVS?  I'm believe we fixed this
already.

-jh-

> "Alexander A. Rudnev" wrote:
> 
> Hi, I've encountered some problem with performance and found that
> possible reason (most probably it is not important and I'm wrong here,
> I'll figure it out tomorrow, but anyway, it's kind of
> performance/memory leak) is managing of "availableNamespaces" in
> SAXHandler. For example, if we declare some namespace in the root
> element and then all nested elements have this namespace, then for
> every nested element new copy of the namespace will be added to the
> "availableNamespaces" and will not be removed from it until the end of
> the parsing process. This is because element's namespace is added to
> the "availableNamespaces" every time on "startElement", but only
> "additionalNamespaces" are removed on "endElement".
> Possible fix is to add element's namespace conditionally, say in such
> a way
> 
>  public void startElement(String namespaceURI, String localName,
>         String qName, Attributes atts)
>         throws SAXException {
> ...
>    // Remove this namespace from those in the temp declared list
>    if (declaredNamespaces.size() > 0) {
>     if(declaredNamespaces.remove(elementNamespace)) {
>      // It's now in available scope
>      availableNamespaces.addFirst(elementNamespace);
>     }
>    }
> ...
> 
> , but actually I did not think about it a lot.
> 
> Thanks.



More information about the jdom-interest mailing list