<Swing Dev> Review Request for 8163261: regression on Linux: java/awt/LightweightDispatcher/LWDispatcherMemoryLeakTest.java

Ambarish Rapte ambarish.rapte at oracle.com
Fri Aug 26 07:04:14 UTC 2016


Hi All,

Please hold the review for this.

There are some merge conflicts with latest code so I shall update the webrev again for review.

 

Regards,

Ambarish

 

From: Ambarish Rapte 
Sent: Thursday, August 25, 2016 10:19 PM
To: Alexander Scherbatiy; Sergey Bylokhov; Rajeev Chamyal; swing-dev at openjdk.java.net
Subject: Re: <Swing Dev> Review Request for 8163261: regression on Linux: java/awt/LightweightDispatcher/LWDispatcherMemoryLeakTest.java

 

Hi Alex,

                Thanks for the review comments,

                Please review the updated webrev: http://cr.openjdk.java.net/~arapte/8163261/webrev.01/

 

                I have included the change you suggested,  to set component reference null after painting the component.

 

                In addition there is change in PainterMultiResolutionCachedImage to add hashCode() & equals() methods.

                Object of PainterMultiResolutionCachedImage is used as key in the       Map<Object, ImageCache> cacheMap.

                hashCode() & equals() would avoid multiple entries of similar image objects in the cacheMap & help reduce the size of cacheMap.

 

                Verified this change by executing the SwinSet2 demo, all components get painted correctly.

 

                Also a small change in test, added check on panel reference and modified error message.

 

Regards,

Ambarish

 

From: Alexander Scherbatiy 
Sent: Monday, August 22, 2016 5:47 PM
To: Ambarish Rapte; Sergey Bylokhov; Rajeev Chamyal; HYPERLINK "mailto:swing-dev at openjdk.java.net"swing-dev at openjdk.java.net
Subject: Re: <Swing Dev> Review Request for 8163261: regression on Linux: java/awt/LightweightDispatcher/LWDispatcherMemoryLeakTest.java

 


On 17/08/16 15:49, Alexandr Scherbatiy wrote:

On 8/15/2016 12:43 PM, Ambarish Rapte wrote:

Hi,

                Please review fix for JDK9,

                Bug: https://bugs.openjdk.java.net/browse/JDK-8163261

                Webrev: HYPERLINK "http://cr.openjdk.java.net/%7Earapte/8163261/webrev.00/"http://cr.openjdk.java.net/~arapte/8163261/webrev.00/

 

Issue:

                Reference to JButton was not getting collected by GC.

 

Cause:

                A strong reference to objects was held by PainterMultiResolutionCachedImage.

                And the image reference was held by HashMap.

 

Fix:

                Changing the HashMap to WeakHashMap. Entry to WeakHashMap gets removed after the object has no other strong reference.

    May be using the soft reference would be better in this case. It could be expensive to recreate a cache with images every time GC removed them.


There is the code which sets a component to the PainterMultiResolutionCachedImage: 
CachedPainter.paint0(...)
-------
        if (image instanceof PainterMultiResolutionCachedImage) {
            ((PainterMultiResolutionCachedImage) image).setParams(c, args);
        }

        // Render to the passed in Graphics
        paintImage(c, g, x, y, w, h, image, args);
-------

May be it is possible to clean up the component and args from the PainterMultiResolutionCachedImage after the image is drawn?




  Thanks,
  Alexandr.

 

 

 

Regards,

Ambarish

 

 

 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/swing-dev/attachments/20160826/4e2b2613/attachment.html>


More information about the swing-dev mailing list