<Swing Dev> Review Request for 8163261: regression on Linux: java/awt/LightweightDispatcher/LWDispatcherMemoryLeakTest.java
Alexandr Scherbatiy
alexandr.scherbatiy at oracle.com
Mon Aug 29 12:38:51 UTC 2016
CachedPainter.paint0() uses the object returned by getClass() as a key
for the cache.
Is it possible to use PainterMultiResolutionCachedImage.class object as
a key in the PainterMultiResolutionCachedImage.getResolutionVariant()
method?
Thanks,
Alexandr.
On 8/26/2016 1:34 PM, Ambarish Rapte wrote:
>
> Hi Alex & All,
>
> Please review the updated webrev :
> http://cr.openjdk.java.net/~arapte/8163261/webrev.02/
> <http://cr.openjdk.java.net/%7Earapte/8163261/webrev.02/>
>
> Changes: (Copying from the previous email)
>
> 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:*Ambarish Rapte
> *Sent:* Friday, August 26, 2016 12:34 PM
> *To:* Ambarish Rapte; 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 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 <mailto: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/
> <http://cr.openjdk.java.net/%7Earapte/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;
> swing-dev at openjdk.java.net <mailto: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:
> http://cr.openjdk.java.net/~arapte/8163261/webrev.00/
> <http://cr.openjdk.java.net/%7Earapte/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/20160829/dfaf5f31/attachment.html>
More information about the swing-dev
mailing list