Details
Description
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)
}
catch (Exception e)
}
}.start();
monitor.wait();
Thread.yield();
}
}
}
}
---------------------------------------------------------------------
Attachments
Attachments
Issue Links
- duplicates
-
XALANJ-1844 XMLReaderManager provides neither a way to clear its cache nor does it clear its cache by itself
- Resolved