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


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