[ 
http://issues.apache.org/jira/browse/XALANJ-2117?page=comments#action_64994 ]
     
Carlo Marchiori commented on XALANJ-2117:
-----------------------------------------

Sorry for not having spotted the duplication before.

I don't known which solution was adopted for issue 1844, yet it is still 
questionable if the cache is useful, even after the resolution of the bug which 
kept in memory parsers after the associated thread died.

In the application which led me to discover the bug I found thread local cached 
parsers which kept in memory up to 10MB (yes, megabyte) of data each. In a 
server it's not strange to have tens of live threads, so there is a potential 
memory loss of hundreds of MB. I think this is unacceptable. 

In issue XALANJ-1844 there is a link to an IBM fixpack, yet the link is broken. 
May you please point me to the correct site?

Thanks,
Carlo.


> OutOfMemoryError in a few seconds due to the thread local cache of SAXParser 
> instances
> --------------------------------------------------------------------------------------
>
>          Key: XALANJ-2117
>          URL: http://issues.apache.org/jira/browse/XALANJ-2117
>      Project: XalanJ2
>         Type: Bug
>   Components: Xalan
>     Versions: 2.6
>  Environment: generic
>     Reporter: Carlo Marchiori
>      Fix For: CurrentCVS
>  Attachments: XMLReaderManager.java, XMLReaderManager.java, src.zip
>
> This simple program causes an OutOfMemoryError in a few seconds due to the 
> thread local cache of SAXParser instances (see XmlReaderManager class).
> The problem is particularly annoying when threads are often created (because 
> the server is under heavy load, because application exceptions kill existing 
> threads, because applications create short live threads in which to perform 
> transformations, because...)
> ---------------------------------------------------------------------
> import javax.xml.transform.Source;
> import javax.xml.transform.Transformer;
> import javax.xml.transform.TransformerFactory;
> import javax.xml.transform.TransformerFactoryConfigurationError;
> import javax.xml.transform.stream.StreamResult;
> import javax.xml.transform.stream.StreamSource;
> public class Prova
> {
>     
>     public static void main (String[] args) throws Exception, 
> TransformerFactoryConfigurationError
>     {
>         final TransformerFactory newInstance = 
> TransformerFactory.newInstance();
>         final Object monitor = new Object ();
>         
>         for (;;)
>         {
>             synchronized (monitor)
>             {
>                   new Thread ()
>                   {
>                       public void run ()
>                       {
>                           try
>                           {
>                               synchronized (monitor)
>                               {                               
>                                       Source xsl = new StreamSource 
> ("prova.xsl");
>                                       Transformer transformer = 
> newInstance.newTransformer(xsl);
>                                       Source xml = new StreamSource 
> ("prova.xml");
>                                       transformer.transform(xml, new 
> StreamResult ("ouput.xml"));
>                                       monitor.notify();
>                               }
>                           }
>                           catch (Exception e)
>                           {
>                               e.printStackTrace();
>                               System.exit(1);
>                           }
>                       }
>                   }.start();
>                   monitor.wait();
>                   Thread.yield();
>             }
>             
>         }
>     }
> }
> ---------------------------------------------------------------------

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to