> 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.
Alan Bateman has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains four additional commits since the last revision: - Change test to use nanoTime - Merge - Fix @run tag - Initial commit ------------- Changes: - all: https://git.openjdk.org/jdk/pull/14047/files - new: https://git.openjdk.org/jdk/pull/14047/files/89475604..562c6a1e Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=14047&range=01 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=14047&range=00-01 Stats: 5024 lines in 169 files changed: 3826 ins; 371 del; 827 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