RFR: 8088420: JavaFX WebView memory leak via EventListener [v3]
Jay Bhaskar
jbhaskar at openjdk.java.net
Sun May 22 11:44:50 UTC 2022
> This PR is new implementation of JavaEvent listener memory management.
> Issue [JDK-8088420](https://bugs.openjdk.java.net/browse/JDK-8088420?filter=-1)
>
> 1. Calling remove event listener does not free jni global references.
> 2. When WebView goes out of scope (disposed from app) , its Event Listeners are not being garbage collected.
>
> Solution:
> 1. Detached the jni global reference from JavaEventListener.
> 2. Create scoped ref counted wrapper class JavaObjectWrapperHandler for jni global reference.
> 3. Create unique JavaObjectWrapperHandler object for each JavaEventListener.
> 4. EventListenerManager is a singleton class , which stores the JavaObjectWrapperHandler mapped with JavaEventListener.
> 5. EventListenerManager also stores the JavaEventListener mapped with DOMWindow.
> 6. When Event listener explicitly removed , JavaEventListener is being forwarded to EventListenerManager to clear the listener.
> 7. When WebView goes out of scope, EventListenerManager will de-registered all the event listeners based on the ref counts attached with WebView DOMWindow.
Jay Bhaskar has updated the pull request incrementally with one additional commit since the last revision:
remove data from map and extend unit test
-------------
Changes:
- all: https://git.openjdk.java.net/jfx/pull/799/files
- new: https://git.openjdk.java.net/jfx/pull/799/files/2d5604bf..5dc52378
Webrevs:
- full: https://webrevs.openjdk.java.net/?repo=jfx&pr=799&range=02
- incr: https://webrevs.openjdk.java.net/?repo=jfx&pr=799&range=01-02
Stats: 419 lines in 6 files changed: 407 ins; 7 del; 5 mod
Patch: https://git.openjdk.java.net/jfx/pull/799.diff
Fetch: git fetch https://git.openjdk.java.net/jfx pull/799/head:pull/799
PR: https://git.openjdk.java.net/jfx/pull/799
More information about the openjfx-dev
mailing list