On Tue, 12 Sep 2023 12:34:12 GMT, Christopher Sahnwaldt <d...@openjdk.org> 
wrote:

>> In 
>> https://github.com/openjdk/jdk/commit/b8af3d50192f8bc98d83f8102f0fd1989f302e32
>>  the weak reference was accidentally changed from a field to a local 
>> variable, which means that the PropertyChangeListener keeps a strong 
>> reference to executorService, which is a resource leak
>
> Christopher Sahnwaldt has updated the pull request incrementally with one 
> additional commit since the last revision:
> 
>   SwingWorkerExecutorLeakTest.java: use AppContext.getAppContext() instead of 
> SunToolkit.createNewAppContext() to create AppContext, set necessary system 
> properties

I just found [this 
comment](https://bugs.openjdk.org/browse/JDK-8289616?focusedCommentId=14516108#comment-14516108)
 by @prrace: "AppContext.dispose() is no longer called from anywhere in JDK 
code." So as I explained in my previous comment, this is a non-issue. I'll 
close it.

Arguably, there still is a resource leak, because the executor created in 
`SwingWorker.getWorkersExecutorService()` is never shut down. But that's 
probably only relevant if there is a significant time span in which the JVM is 
still running but the `AppContext` isn't needed anymore. I guess such a 
situation only occurs if an application starts a GUI, later shuts down the GUI, 
but keeps the JVM running. Should be pretty rare.

Anyway, my suggested fix won't help, because it depends on 
`AppContext.dispose()` being called, which will never happen. Sorry for the 
waste of time. :-)

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

PR Comment: https://git.openjdk.org/jdk/pull/15081#issuecomment-1715896997

Reply via email to