<AWT Dev> [8] Review request for CR 7079254 Toolkit eventListener leaks memory

Petr Pchelko petr.pchelko at oracle.com
Wed Jan 9 04:30:50 PST 2013


Hello.

Thank you for the replies. Here is the new version of the fix with a test case and improvements suggested by Artem:
http://cr.openjdk.java.net/~serb/petr/7079254/webrev/

With best regards, Petr

On Dec 25, 2012, at 1:46 PM, Artem Ananiev wrote:

> 
> A few comments about the test:
> 
> 1. "-mx10m" should be replaced with "-Xmx10M"
> 
> 2. assertGC() can be implemented more reliably:
> 
>  List<int[]> l = new LinkedList<>();
>  while (true) {
>    try {
>      l.add(new int[10000]);
>    } catch (OutOfMemoryError e) {
>      break;
>    }
>  }
> 
> After such a loop, GC is guaranteed to have collected all the dead objects.
> 
> Thanks,
> 
> Artem
> 
> On 12/25/2012 11:34 AM, Petr Pchelko wrote:
>> Hello.
>> 
>> Thank you for your feedback.
>> 
>> Here is the new version of the fix:
>> http://cr.openjdk.java.net/~art/pchelko/7079254/webrev.01/
>> 
>> Changes from the previous one:
>> 	1. Added a test.
>> 	2. Moved creadLightweightDispatcherOnRemove into a synchronized section.
>> 
>> Best, Petr.
>> 
>> On Dec 24, 2012, at 4:03 PM, Artem Ananiev wrote:
>> 
>>> Hi, Petr,
>>> 
>>> the fix looks fine. Please, move clearLightweightDispatcherOnRemove() into the synchronized section, as lightweight dispatcher is used under tree lock.
>>> 
>>> As Sergey suggested, it would be fine to have a regression test for this change.
>>> 
>>> Thanks,
>>> 
>>> Artem
>>> 
>>> On 12/21/2012 4:50 PM, Petr Pchelko wrote:
>>>> Hello.
>>>> 
>>>> Could you please review the fix for the issue
>>>> 7079254 Toolkit eventListener leaks memory
>>>> http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7079254
>>>> 
>>>> The webrev is available at:
>>>> http://cr.openjdk.java.net/~art/pchelko/7079254/webrev/
>>>> 
>>>> The LightweightDispatcher stored strong references to mouseEventTarget and targetLastEntered which were not cleaned up when the component is removed, which lead to a memory leak. The isCleaned field is added to be able to consume events which would be dispatched to a removed component if we did not clean up a reference to it.
>>>> 
>>>> The fix testet on Windows and Mac on toy apps and automatic regression tests related to event dispatching, Component, Container, dnd and Mouse
>>>> 
>>>> Best, Petr.
>>>> 
>> 




More information about the awt-dev mailing list