Integrated: 8367993: G1: Speed up ConcurrentMark initialization

Leo Korinth lkorinth at openjdk.org
Mon Feb 2 08:05:23 UTC 2026


On Tue, 9 Dec 2025 14:56:49 GMT, Leo Korinth <lkorinth at openjdk.org> wrote:

> This change moves almost all of the ConcurrentMark initialisation from its constructor to the method `G1ConcurrentMark::fully_initialize()`.  Thus, creation time of the VM can be slightly improved by postponing creation of ConcurrentMark. Most time is saved postponing creation of statistics buffers and threads.
> 
> It is not obvious that this is the best solution. I have earlier experimented with lazily allocating statistics buffers _only_. One could also initialise a little bit more eagerly (for example the concurrent mark thread) and maybe get a slightly cleaner change. However IMO it seems better to not have ConcurrentMark "half initiated" with a created mark thread, but un-initialised worker threads.
> 
> This change is depending on the integration of https://bugs.openjdk.org/browse/JDK-8373253.
> 
> I will be out for vacation, and will be back after new year (and will not answer questions during that time), but I thought I get the pull request out now so that you can have a look.

This pull request has now been integrated.

Changeset: 766e03b1
Author:    Leo Korinth <lkorinth at openjdk.org>
URL:       https://git.openjdk.org/jdk/commit/766e03b151b2972108ddc207eed10428e9a91c30
Stats:     57 lines in 9 files changed: 30 ins; 6 del; 21 mod

8367993: G1: Speed up ConcurrentMark initialization

Reviewed-by: sjohanss, tschatzl

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

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


More information about the hotspot-dev mailing list