Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8230311

ThreadMXBean::getThreadAllocatedBytes() can be quicker for self thread

    Details

    • Type: CSR
    • Status: Closed
    • Priority: P4
    • Resolution: Approved
    • Fix Version/s: 14
    • Component/s: core-svc
    • Labels:
      None
    • Subcomponent:
    • Compatibility Risk:
      minimal
    • Compatibility Risk Description:
      Adds a method with well-understood semantics and leaves existing method semantics unchanged. Existing programs will continue to compile and execute as before.
    • Interface Kind:
      Java API
    • Scope:
      JDK

      Backports

        Description

        Summary

        Add com.sun.management.ThreadMXBean::getCurrentThreadAllocatedBytes.

        Problem

        com.sun.management.ThreadMXBean includes getThreadAllocatedBytes in two versions, one which takes a thread_id and another which takes an array of thread_ids.

        getThreadAllocatedBytes(long id);
        getThreadAllocatedBytes(long[] ids);</code></pre>
        
        <p>It also includes versions of getThreadCpuTime and getThreadUserTime that take an array of thread_ids.</p>
        
        <pre class="prettyprint" ><code>getThreadCpuTime(long[] ids);
        getThreadUserTime(long[] ids);

        java.lang.thread.ThreadMXBean defines single thread_id and current thread versions of these.

        getThreadCpuTime(long id);
        getThreadUserTime(long id);
        getCurrentThreadCpuTime();
        getCurrentThreadUserTime();

        Three versions of Cpu and User time are thus available from com.sun.management.ThreadMXBean: current thread, single thread_id, and an array of thread_ids. Only two versions of AllocatedBytes are currently available: single thread_id and an array of thread_ids.

        The current thread versions of Cpu and User time are optimized to by avoiding checks needed by the versions that take thread_id(s). getCurrentThreadAllocatedBytes can also be so optimized, is useful for applications that monitor themselves, and rounds out the set of AllocatedBytes methods. As with the other AllocatedBytes methods, getCurrentThreadAllocatedBytes is a method on com.sun.management.ThreadMXBean rather than java.lang.thread.ThreadMXBean in order to avoid requiring all implementations to support it.

        Solution

        Add com.sun.management.ThreadMXBean::getCurrentThreadAllocatedBytes.

        Specification

        /**
         * Returns an approximation of the total amount of memory, in bytes,
         * allocated in heap memory for the current thread.
         * The returned value is an approximation because some Java virtual machine
         * implementations may use object allocation mechanisms that result in a
         * delay between the time an object is allocated and the time its size is
         * recorded.
         *
         * <p>
         * This is a convenience method for local management use and is
         * equivalent to calling:
         * <blockquote><pre>
         *   {@link #getThreadAllocatedBytes getThreadAllocatedBytes}(Thread.currentThread().getId());
         * </pre></blockquote>
         *
         * @return an approximation of the total memory allocated, in bytes, in
         * heap memory for the current thread
         * if thread memory allocation measurement is enabled;
         * {@code -1} otherwise.
         *
         * @throws java.lang.UnsupportedOperationException if the Java virtual
         *         machine implementation does not support thread memory allocation
         *         measurement.
         *
         * @see #isThreadAllocatedMemorySupported
         * @see #isThreadAllocatedMemoryEnabled
         * @see #setThreadAllocatedMemoryEnabled
         * @since 14
         */
        public long getCurrentThreadAllocatedBytes();

          Attachments

            Issue Links

              Activity

                People

                • Assignee:
                  phh Paul Hohensee
                  Reporter:
                  dcubed Daniel Daugherty
                  Reviewed By:
                  Mandy Chung
                • Votes:
                  0 Vote for this issue
                  Watchers:
                  4 Start watching this issue

                  Dates

                  • Created:
                    Updated:
                    Resolved: