On Wed, 10 May 2023 23:57:47 GMT, Paul Hohensee <p...@openjdk.org> wrote:

>> Please review this addition to com.sun.management.ThreadMXBean that returns 
>> the total number of bytes allocated on the Java heap since JVM launch by 
>> both terminated and live threads.
>> 
>> Because this PR adds a new interface method, I've updated the JMM_VERSION to 
>> 4, but would be happy to update it to 3_1 instead.
>
> Paul Hohensee has updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   8304074: getTotalThreadAllocatedBytes name change, increment 
> exited_allocated_bytes in ThreadService::remove_thread, add 64-bit atomic add 
> for linux/bsd_x86, stub out for other platforms

src/hotspot/share/services/management.cpp line 2107:

> 2105:     // twice, once in the loop and agsin in exited_allocated_bytes if 
> it's
> 2106:     // removed from the list after it's encountered in the loop but 
> before
> 2107:     // adding exited_allocated_bytes.

This is not an accurate description.

Once we have the TLH we have a fixed set of threads and none of them can update 
exited_allocated_bytes. If we read exited_allocated_bytes while the TLH is held 
then the count can be short for two reasons:
1. Newly started threads
2. Terminating threads that already escaped the TLH but which hadn't updated 
exited_allocated_bytes by the time we read it.
AFAICS with the current logic there is no possibility of double-accounting.

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

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

Reply via email to