First, is there a good description available on how the sun.java2d.Disposer 
class works in Java 1.5.0?

Second, I think I've found a possible reference leak.

1) A console-only application is started.
2) After 10 minutes of running, a thread dump does NOT show any Java2D Disposer 
thread.
3) After 20 minutes of running, a background image is created using Java2D, and 
sent over the network. (The image is never shown on screen, the app is still 
running in console mode)
4) After (3) above, a new thread can be seen in the thread dump (the 
sun.java2d.Disposer thread).

Now, the original thread that started the offline rendering had a couple of 
InheritableThreadLocals set. I don't know how/where the disposer thread is 
created, but it appears that it (as you would guess) inherits the 
InteritableThreadLocals of the thread that caused Java2D to be (lazily?) 
initialized.

Of course, one of the InheritableThreadLocals (indirectly) references a 
ClassLoader that has 2GB of memory attached. Later in the application 
lifecycle, this prevents garbage collection, and triggers a memory overflow 
(OOM).
[Message sent by forum member 'plethora' (plethora)]

http://forums.java.net/jive/thread.jspa?messageID=121561

===========================================================================
To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
of the message "signoff JAVA2D-INTEREST".  For general help, send email to
[EMAIL PROTECTED] and include in the body of the message "help".

Reply via email to