[OpenJDK 2D-Dev] [9] Review Request: 8028486 java/awt/Window/WindowsLeak/WindowsLeak.java fails

Phil Race philip.race at oracle.com
Mon May 2 20:52:05 UTC 2016


Just to make sure I understand this right, even if an application
disposes of all Frames, we still somehow hold on to one Frame ?

And it was the most recent one used by "validatedSrcData"
due to some long reference chain ?

WeakReferences are cleared quite aggressively so if an
application loops doing

while (true) {
Frame f = new Frame(..)
f.show();
f.dispose();
System.gc(); // clear weak refs
}

then we may be re-creating these objects.


-phil.

On 05/02/2016 01:26 PM, Sergey Bylokhov wrote:
> Hello,
> Please review the fix for jdk9.
>
> Bug evaluation was done by Anton:
> http://mail.openjdk.java.net/pipermail/awt-dev/2016-April/011177.html
>
> This is a cross-platform bug it affects d3d/ogl pipelines. The problem 
> is that BufferedContex cached information to skip some native 
> reconfigurations. But this cache cause a memory leak if some 
> data(src/dst surfaces) was cached and there was no new rendering in 
> this context(we create context per-d3d_device/ogl_config).
>
> In the fix I changed all these caches to weak references. Note that i 
> use a references as initial values instead of null, just to eliminate 
> the null checks in the body of the method.
>
> The test was updated to be more stable(flushed the EDT + flushed the 
> Disposer thread).
>
> Bug: https://bugs.openjdk.java.net/browse/JDK-8028486
> Webrev can be found at: 
> http://cr.openjdk.java.net/~serb/8028486/webrev.00
>




More information about the 2d-dev mailing list