RFR: 8088420: JavaFX WebView memory leak via EventListener [v6]
danielpeintner
duke at openjdk.java.net
Thu May 26 07:17:50 UTC 2022
On Thu, 26 May 2022 07:08:59 GMT, Jay Bhaskar <jbhaskar at openjdk.org> wrote:
>> 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:
>
> Adding new review change
modules/javafx.web/src/main/native/Source/WebCore/bindings/java/EventListenerManager.h line 34:
> 32: #include "config.h"
> 33:
> 34: #include<map>
nit: space
-------------
PR: https://git.openjdk.java.net/jfx/pull/799
More information about the openjfx-dev
mailing list