RFR: 8274022 fixing critical memory leak in the ControlAcceleratorSupport [v3]
Florian Kirmaier
fkirmaier at openjdk.java.net
Mon Nov 15 08:28:42 UTC 2021
On Fri, 12 Nov 2021 23:42:30 GMT, Kevin Rushforth <kcr at openjdk.org> wrote:
>> Florian Kirmaier has updated the pull request incrementally with one additional commit since the last revision:
>>
>> 8274022
>> Simplified code related to WeakHashMaps
>
> modules/javafx.controls/src/main/java/com/sun/javafx/scene/control/ControlAcceleratorSupport.java line 291:
>
>> 289: WeakReference<ChangeListener<KeyCombination>> listenerW = changeListenerMap.get(menuitem);
>> 290: ChangeListener<KeyCombination> listener = listenerW == null ? null : listenerW.get();
>> 291: if (listener != null) {
>
> This will fail to remove a weak reference to a listener that has been collected. It is a `WeakHashMap`, so the `WeakReference` to the listener will be reclaimed as soon as the `menuItem` is no longer reachable, but if you used the same logic as you did for the scene listener (e.g., on lines 254-261), it would be removed sooner. I don't know whether it matters in this case.
Yes, you are right. I now use the same logic in all 3 places.
I guess it doesn't matter because the key always references the listener - but the code is now more straight line.
-------------
PR: https://git.openjdk.java.net/jfx/pull/659
More information about the openjfx-dev
mailing list