On Wed, 10 Mar 2021 22:25:32 GMT, Florian Kirmaier <fkirma...@openjdk.org> 
wrote:

> Fixing a memory leak. 
> A node hard references its old parent after CSS layout and getting removed. 
> This shouldn't be the case, this is very counterintuitive.
> 
> The fix uses a WeakReference in CSSStyleHelper for firstStyleableAncestor.
> This should be fine because the CSS should only depend on it if it's still 
> the real parent. 
> In that case, it doesn't get collected.

modules/javafx.graphics/src/main/java/javafx/scene/CssStyleHelper.java line 180:

> 178:         helper.cacheContainer = new CacheContainer(node, styleMap, 
> depth);
> 179: 
> 180:         helper.firstStyleableAncestor = new 
> WeakReference<>(findFirstStyleableAncestor(node));

Can you investigate for an alternative to set `firstStyleableAncestor` to null 
when the related `node` is removed from scenegraph
or
may be `null` the reference to `Node.styleHelper` itself when Node is removed 
from scenegraph. This will result in recreating the `Node.styleHelper` next 
time when it is added back to scenegraph.

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

PR: https://git.openjdk.java.net/jfx/pull/424

Reply via email to