On Fri, 30 Dec 2022 09:41:46 GMT, Florian Kirmaier <fkirma...@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`.

-------------

PR: https://git.openjdk.org/jfx/pull/987

Reply via email to