On Tue, 6 Oct 2026 00:25:32 GMT, Patrick Fontanilla <[email protected]> 
wrote:

> ### Summary
> For Shenandoah and ZGC, safepoint workers were created at startup and only 
> used for heap dump and heap inspection. If heap dump or heap inspection never 
> runs, these threads consume memory without doing any work. For G1 and 
> Parallel, GC pauses and non-GC safepoints share the GC worker pool, so heap 
> dump and heap inspection don't need a separate worker pool. The downside is 
> that dump and inspection work contributes to GC CPU time, which can affect 
> how G1 sizes its heap.
> 
> ### Changes
> Safepoint workers are replaced with a diagnostic worker pool used by heap 
> dump and heap inspection. The diagnostic worker pool is created on the first 
> heap dump or heap inspection that requests more than one thread, if the 
> collector supports parallel heap iteration and `os::active_processor_count()` 
> > 1. The pool holds at most `os::active_processor_count()` workers, and 
> workers stay alive until the VM exits.
> 
> G1 and Parallel no longer lend their GC worker pool. ZGC's `ZRuntimeWorkers` 
> is deleted because it's no longer used. For Shenandoah, diagnostic workers 
> have no GCLAB and fall back to shared allocation when they evacuate objects.
> 
> ### Testing all passed
> - linux-x86_64-server-fastdebug: `hotspot:tier1_gc`, 
> `hotspot:tier1_serviceability`, `gc/shenandoah`
> - GHA
> - Internal CI pipeline
> 
> ### Benchmarking
> Running HeapDump.java from 
> [JDK-8319650](https://bugs.openjdk.org/browse/JDK-8319650) with 8 GB heap and 
> 36 CPUs
> ``` 
>   ┌───────────┬─────────────────────┬─────────────────────┐
>   │ Collector │       Master        │       Branch        │
>   ├───────────┼─────────────────────┼─────────────────────┤
>   │ Serial    │ 3.200, 3.197, 3.199 │ 3.231, 3.247, 3.221 │
>   ├───────────┼─────────────────────┼─────────────────────┤
>   │ Parallel  │ 0.971, 0.953, 0.976 │ 0.957, 0.921, 0.918 │
>   ├───────────┼─────────────────────┼─────────────────────┤
>   │ G1        │ 0.999, 1.009, 0.985 │ 0.936, 0.948, 0.911 │
>   └───────────┴─────────────────────┴─────────────────────┘
> 
> 
> 
> 
> ---------
> - [x] I confirm that I make this contribution in accordance with the [OpenJDK 
> Interim AI Policy](https://openjdk.org/legal/ai).

This pull request has now been integrated.

Changeset: f921bd7c
Author:    Patrick Fontanilla <[email protected]>
Committer: Rui Li <[email protected]>
URL:       
https://git.openjdk.org/jdk/commit/f921bd7c9e2388673f9f1e6ba59666e9c9fc9542
Stats:     641 lines in 21 files changed: 434 ins; 152 del; 55 mod

8392050: Purge CollectedHeap::safepoint_workers() support

Reviewed-by: stefank, shade, wkemper, kdnilsen

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

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

Reply via email to