RFR: 8315149: Add hsperf counters for CPU time of internal GC threads [v53]

Albert Mingkun Yang ayang at openjdk.org
Fri Dec 1 14:45:24 UTC 2023


On Fri, 1 Dec 2023 09:58:16 GMT, Stefan Johansson <sjohanss at openjdk.org> wrote:

>> I thought it is typically preferred to initialize a singleton object on the heap, rather than using several static variables. It is easier to control the initialization order and timing of an on-heap singleton object than statics.
>> 
>> Moreover, for this class, `initialize()` could also check `if (UsePerfData)`, and only create the singleton object under `UsePerfData`. This could save some memory when `UsePerfData` is false.
>
> I would say it depends on the use-case and here when switching to use static functions to use the instance it felt more like an all-static class. I agree that it would be nice to avoid the additional memory usage if `UsePerfData` is `false` so I'm ok with keeping the instance if we add that.

> It is easier to control the initialization order and timing of an on-heap singleton object than statics.

It's generally true, but the init of CPUTimeCounters is not sensitive to ordering.

> This could save some memory when UsePerfData is false.

True, but the mem savings will be marginal at most, `PerfCounter* _cpu_time_counters[static_cast<int>(CPUTimeGroups::CPUTimeType::COUNT)];` will be 8 * ~12 = ~96 bytes (including future cpu-time-type enums).

(I don't have a strong preference here; however, I'd like to make the pros and cons explicit.)

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

PR Review Comment: https://git.openjdk.org/jdk/pull/15082#discussion_r1412193296


More information about the hotspot-gc-dev mailing list