ButtonSkin adds a `ChangeListener` to `Control.sceneProperty()` which results in leaking the `ButtonSkin` itself when the `Button`'s skin is changed to a new `ButtonSkin`. Using a `WeakChangeListener` instead of `ChangeListener` solves the issue.
Please take a look. ------------- Commit messages: - 8236840: Memory leak when switching ButtonSkin Changes: https://git.openjdk.java.net/jfx/pull/147/files Webrev: https://webrevs.openjdk.java.net/jfx/147/webrev.00 Issue: https://bugs.openjdk.java.net/browse/JDK-8236840 Stats: 84 lines in 2 files changed: 64 ins; 17 del; 3 mod Patch: https://git.openjdk.java.net/jfx/pull/147.diff Fetch: git fetch https://git.openjdk.java.net/jfx pull/147/head:pull/147 PR: https://git.openjdk.java.net/jfx/pull/147