[ 
https://issues.apache.org/jira/browse/XALANJ-2195?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14360257#comment-14360257
 ] 

Srdan Srepfler edited comment on XALANJ-2195 at 3/13/15 12:12 PM:
------------------------------------------------------------------

Can this be triggered by a SAXParseException as well? I see 2.7.2 is the latest 
Xalan, any chance it solved this issue?
example: {code}org.xml.sax.SAXParseException: An invalid XML character 
(Unicode: 0x{2}) was found in the value of attribute "{1}" and element is 
"1d".{code}




was (Author: schrepfler):
Can this be triggered by a SAXParseException as well? I see 2.7.2 is the latest 
Xalan, any chance it solved this issue?
example: org.xml.sax.SAXParseException: An invalid XML character (Unicode: 
0x{2}) was found in the value of attribute "{1}" and element is "1d".



> Memory leak in XMLReaderManager
> -------------------------------
>
>                 Key: XALANJ-2195
>                 URL: https://issues.apache.org/jira/browse/XALANJ-2195
>             Project: XalanJ2
>          Issue Type: Bug
>          Components: Xalan
>    Affects Versions: 2.7
>            Reporter: Marko Strukelj
>            Priority: Blocker
>         Attachments: gc-roots.jpg, retained-object-sizes.jpg, 
> xalan-j2-2.6.0-xmlmemoryleak-tm2l.patch
>
>
> In class org.apache.xml.utils.XMLReaderManager 
> getXMLReader() method creates a new XMLReader (i.e. SAXParser) and stores it 
> into ThreadLocal.
> releaseXMLReader() does not remove (set to null) ThreadLocal thus creating a 
> permanent leak.
> Unfortunately the size of the cached Reader is typically dependent upon the 
> size of the XML document you process (depends on implementation but this is 
> the case with xerces SAXParser). In heavy load server environments with 
> thread pools of tens and hundreds of threads the server sustains a 
> significant memory leak (hundreds of megabytes - depending on the XML 
> document sizes and number of threads in a thread pools).
> A fix is trivial:
> Put the following line at the end of releaseXMLReader method:
> m_readers.set(null);
> I wonder, why is reader stored in ThreadLocal in the first place?



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@xalan.apache.org
For additional commands, e-mail: dev-h...@xalan.apache.org

Reply via email to