- 
    
CSR
 - 
    Resolution: Withdrawn
 - 
    
  P4                     
     - 
    None
 
- 
        source
 - 
        minimal
 - 
        
 - 
        Java API
 
Original CSR: https://bugs.openjdk.java.net/browse/JDK-8230311.
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();
            - csr of
 - 
                    
JDK-8231193 ThreadMXBean::getThreadAllocatedBytes() can be quicker for self thread
-         
     - Closed
 
 -