This PR covers a number of issues with j.l.management.ThreadMXBean, and the 
JDK-specific extension c.s.management.ThreadMXBean, when there are virtual 
threads in use.

As background, ThreadMXBean was re-specified in Java 19 to support the 
monitoring and management of platform threads. It does not support virtual 
threads as their potential number, and the need to find a thread by id, does 
not make sense for this API. At the same time, JDK 19 introduced an alternative 
implementation of virtual threads for Zero and ports without continuations 
support in the VM. This alternative implementation of virtual threads means a 
JavaThread per virtual thread and so requires filtering to ensure that the API 
behaves as specified. For the initial implementation, the filtering was done in 
the ThreadMXBean implementation. That works for most functions but not for 
getThreadXXXTime(long[]) and getThreadAllocatedBytes(long[]) where the 
filtering needs to be pushed down to the management code.

The changes in this PR move the filtering to the management functions (jmm_XXX) 
so they only return information about platform threads. There are some minor 
adjustments to the API docs (see linked CSR). Test coverage is expanded as we 
didn't include tests for c.s.management.ThreadMXBean with virtual threads in 
JDK 19.

Testing tier1-3 (jdk_management test group is in test/jdk/:tier3), plus sanity 
checking that --with-jvm-variants=minimal builds as some of this code is not 
compiled in with minimal VM builds.

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

Commit messages:
 - Fix minimal build
 - Fix minimal build
 - Initial commit

Changes: https://git.openjdk.org/jdk/pull/12762/files
 Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=12762&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8303242
  Stats: 487 lines in 8 files changed: 285 ins; 131 del; 71 mod
  Patch: https://git.openjdk.org/jdk/pull/12762.diff
  Fetch: git fetch https://git.openjdk.org/jdk pull/12762/head:pull/12762

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

Reply via email to