ThreadContainers is an internal class used to make thread pools and other 
groupings of threads discoverable for observability. Some refactoring in 2021 
(in the loom repo, and before integration) accidentally changed the creation of 
a weak reference so that it no longer associated with the reference queue. The 
result is that stale refs aren't expunged from a CHM, leading to a memory leak. 
The change to fix the issue is trivial.

Tests for memory leaks can be problematic, often more trouble than they are 
worth. I started with a test that polls the size of the internal CHM but 
decided to ditch it. Instead, the test is simple. It just runs for a few 
seconds creating ExecuorService implementations (including TPE, TPPE, and FJP), 
unreferencing them without shutdown (so they don't terminate and unregister). 
This is enough to causes OOME with product builds a small heap.

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

Commit messages:
 - Fix @run tag
 - Initial commit

Changes: https://git.openjdk.org/jdk/pull/14047/files
 Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=14047&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8308235
  Stats: 47 lines in 2 files changed: 45 ins; 0 del; 2 mod
  Patch: https://git.openjdk.org/jdk/pull/14047.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/14047/head:pull/14047

PR: https://git.openjdk.org/jdk/pull/14047

Reply via email to