[prev in list] [next in list] [prev in thread] [next in thread]
List: openjdk-openjfx-dev
Subject: Re: RFR: 8293444: Creating ScrollPane with same content component causes memory leak [v3]
From: Andy Goryachev <angorya () openjdk ! org>
Date: 2022-09-29 16:15:34
Message-ID: Z0UcsUqVjA4t37iymg8Xtn3BtlFCnMHWtcfHCgfuKpU=.de9e0252-4ada-492c-9fe1-7a0cb3b42f8c () github ! com
[Download RAW message or body]
On Thu, 29 Sep 2022 08:01:55 GMT, Florian Kirmaier <fkirmaier@openjdk.org> wrote:
> > Andy Goryachev has updated the pull request incrementally with one additional \
> > commit since the last revision:
> > 8293444: review comments
>
> Of course, you can keep it this way.
>
> The point of JMemoryBuddy.memoryTest is, that the user doesn't have to fiddle \
> around with WeakReferences. For the record, your test might look like this (not \
> tested):
> @Test
> public void testScrollPaneObjLeakWhenUsedSameContent() {
> JMemoryBuddy.memoryTest(() -> {
> BorderPane bp = new BorderPane();
>
> Stage stage = new Stage();
> stage.setScene(new Scene(bp));
> stage.show();
>
> Label content = new Label("content");
>
> ScrollPane sp1 = new ScrollPane(content);
> bp.setCenter(sp1);
> Toolkit.getToolkit().firePulse();
>
> ScrollPane sp2 = new ScrollPane(content);
> bp.setCenter(sp2);
> Toolkit.getToolkit().firePulse();
>
> bp.setCenter(null);
> Toolkit.getToolkit().firePulse();
>
> // When the label is still referenced, then only one ScrollPane should stay which \
> is its parent checker.setAsReferenced(label)
> checker.assertCollectable(sp1)
> checker.assertNotCollectable(sp2)
> });
> }
>
> @Test
> public void testScrollPaneObjLeakWhenUsedSameContent() {
> JMemoryBuddy.memoryTest(() -> {
> BorderPane bp = new BorderPane();
>
> Stage stage = new Stage();
> stage.setScene(new Scene(bp));
> stage.show();
>
> Label content = new Label("content");
>
> ScrollPane sp1 = new ScrollPane(content);
> bp.setCenter(sp1);
> Toolkit.getToolkit().firePulse();
>
> ScrollPane sp2 = new ScrollPane(content);
> bp.setCenter(sp2);
> Toolkit.getToolkit().firePulse();
>
> bp.setCenter(null);
> Toolkit.getToolkit().firePulse();
>
> // IF our label is gone, both scrollpanes shold be collectable
> checker.assertCollectable(sp1)
> checker.assertCollectable(sp2)
> });
> }
>
> I think only the first test is the important one.
Thank you for clarifications, @FlorianKirmaier
-------------
PR: https://git.openjdk.org/jfx/pull/900
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic