On Sun, 22 May 2022 14:06:41 GMT, Jay Bhaskar <jbhas...@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 JGObject in plave of raw jni object

modules/javafx.web/src/test/java/test/javafx/scene/web/EventListenerLeakTest.java
 line 764:

> 762:         Thread.sleep(100);
> 763:         assertEquals("Click count", 6, 
> listeners.get(1).get().getClickCount() + 
> listeners.get(0).get().getClickCount());
> 764: 

The above code should be restored.

modules/javafx.web/src/test/java/test/javafx/scene/web/EventListenerLeakTest.java
 line 789:

> 787:         Thread.sleep(100);
> 788:         assertEquals("Click count", 6, 
> listeners.get(1).get().getClickCount() + 
> listeners.get(0).get().getClickCount());
> 789: 

I think the above code should be restored.

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

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

Reply via email to