Integrated: 8273831: PrintServiceLookup spawns 2 threads in the current classloader, getting orphaned
Sergey Bylokhov
serb at openjdk.java.net
Sat Oct 30 09:08:20 UTC 2021
On Thu, 14 Oct 2021 05:43:53 GMT, Sergey Bylokhov <serb at openjdk.org> wrote:
> The PrintServiceLookupProvider can spawn 2 threads on WIndows and one thread on Linux. These threads are connected to the classloader of the web application. During undeployment the app classloader gets removed together with the two orphaned threads by the Tomcat.
>
> Looks like the tomcat has special machinery to workaround such threads:
> https://cwiki.apache.org/confluence/display/tomcat/MemoryLeakProtection#MemoryLeakProtection-cclThreadSpawnedByJRE
> But it should be updated each time we add/update/rename the threads in the JDK. So JreMemoryLeakPreventionListener can be updated to solve this problem, but it will be good to reset the ref to the app class loader as we usually do for our internal threads.
>
> The change updates threads to use the root thread group and null context class loader.
>
> A similar pattern is used here:
> https://github.com/openjdk/jdk/blob/6765f902505fbdd02f25b599f942437cd805cad1/src/java.desktop/share/classes/com/sun/imageio/stream/StreamCloser.java#L89
>
> @aivanov-jdk please take a look
This pull request has now been integrated.
Changeset: 68756782
Author: Sergey Bylokhov <serb at openjdk.org>
URL: https://git.openjdk.java.net/jdk/commit/687567822a5380fb7d8c5b54ae548b2a5c848187
Stats: 120 lines in 3 files changed: 104 ins; 3 del; 13 mod
8273831: PrintServiceLookup spawns 2 threads in the current classloader, getting orphaned
Reviewed-by: aivanov
-------------
PR: https://git.openjdk.java.net/jdk/pull/5939
More information about the client-libs-dev
mailing list