RFR: 8299423: JavaFX Mac system menubar leaks
Florian Kirmaier
fkirmaier at openjdk.org
Sat Dec 31 10:16:56 UTC 2022
On Sat, 31 Dec 2022 04:18:09 GMT, Michael Strauß <mstrauss at openjdk.org> wrote:
>> This PR fixes the leak in the mac system menu bar.
>>
>> Inside the native code, NewGlobalRef is called for the callable.
>> Which makes it into a "GC-Root" until DeleteGlobalRef is called.
>>
>> The DeleteGlobalRef is never called for the MenuEntry, if it's removed from the menu without removing it's callable.
>> This PR adds logic, whether the Menu is inserted. If it's not inserted in a Menu anymore, then DeleteGlobalRef is called, by calling `_setCallback` with the callable "null".
>>
>> The unit test verifies, that this bug happened without this change, but no longer happens with this change.
>
> Have you considered storing a weak global reference to the callback instead of a strong global reference?
> That might also solve the problem without keeping track of the callback in `MacMenuDelegate`.
@mstr2
Thank you, this sounds interesting. I didn't know about it.
I guess this might allow me to remove these slightly complicated changes I've made.
I found it in the documentation here: https://docs.oracle.com/javase/8/docs/technotes/guides/jni/spec/functions.html#weak_global_references
I will try it out beginning next week.
-------------
PR: https://git.openjdk.org/jfx/pull/987
More information about the openjfx-dev
mailing list