jmx-dev RFR: 8304074: [JMX] Add an approximation of total bytes allocated on the Java heap by the JVM [v5]
David Holmes
dholmes at openjdk.org
Mon May 8 02:24:26 UTC 2023
On Fri, 5 May 2023 21:38:47 GMT, Paul Hohensee <phh at 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: [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
More information about the jmx-dev
mailing list