On Fri, 5 May 2023 21:38:47 GMT, Paul Hohensee <[email protected]> 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: [JMX] Add an approximation of total bytes allocated on the Java
> heap by the JVM
src/hotspot/share/services/management.cpp line 2107:
> 2105: // when result is initialized.
> 2106: jlong result = ThreadService::exited_allocated_bytes();
> 2107: for (JavaThreadIteratorWithHandle jtiwh; JavaThread *thread =
> jtiwh.next();) {
If you call `exited_allocated_bytes` whilst you have an active
`ThreadsListHandle` then you at least ensure you don't miss accounting for
threads that are just about to terminate.
src/hotspot/share/services/threadService.cpp line 173:
> 171: // was not called, e.g.,
> JavaThread::cleanup_failed_attach_current_thread().
> 172: decrement_thread_counts(thread, daemon);
> 173:
> ThreadService::incr_exited_allocated_bytes(thread->cooked_allocated_bytes());
By doing this here you increase the likelihood of double-accounting for this
thread. If you do this after the thread is no longer on any threads-list you
may miss its contribution entirely, but you won't double-count it.
src/jdk.management/share/classes/com/sun/management/ThreadMXBean.java line 111:
> 109: * Returns an approximation of the total amount of memory, in bytes,
> 110: * allocated in heap memory since the Java virtual machine was
> launched,
> 111: * including the amount allocated by terminated threads.
This "including ..." part seems redundant - it is the value allocated since JVM
launch.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/13814#discussion_r1186967565
PR Review Comment: https://git.openjdk.org/jdk/pull/13814#discussion_r1186968365
PR Review Comment: https://git.openjdk.org/jdk/pull/13814#discussion_r1186968949