RFR: 8304074: [JMX] Add an approximation of total bytes allocated on the Java heap by the JVM [v19]

Paul Hohensee phh at openjdk.org
Thu May 18 13:58:58 UTC 2023


On Thu, 18 May 2023 12:41:49 GMT, Paul Hohensee <phh at openjdk.org> wrote:

>> src/hotspot/share/services/threadService.hpp line 113:
>> 
>>> 111:     // No need for atomicity, method is called under the Threads_lock
>>> 112:     _exited_allocated_bytes += size;
>>> 113:   }
>> 
>> As there is a lock-free read however you need to use Atomic::load and Atomic::store - especially for 32-bit systems.
>
> Changed. Not sure atomic load is needed.

Even though this version passed the pre-submit tests, which include the new versions of ThreadAllocatedBytes.java, running it more often on a host with many hardware threads resulted in failures where getTotalAllocatedBytes did not monotonically increase. I believe what happened was that without an acquire/release, the hardware can float earlier stores to _exited_allocated_bytes above later ones. Adding acquire/release fixed the issue.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/13814#discussion_r1197862479


More information about the serviceability-dev mailing list