-
CSR
-
Resolution: Approved
-
P4
-
None
-
behavioral
-
minimal
-
Behavior will match the JDK implementation of c.s.m.ThreadMXBean, which currently throws UOE. If that changes, or if a different class implements c.s.m.ThreadMXBean and overrides getCurrentThreadAllocatedBytes' behavior, behavior may change.
-
Java API
-
JDK
Summary
To match its abstract specification, change the default implementation of com.sun.management.ThreadMXBean.getCurrentThreadAllocatedBytes
to return the value of getThreadAllocatedBytes(Thread.currentThread().getId())
.
Problem
The existing default implementation of com.sun.management.ThreadMXBean.getCurrentThreadAllocatedBytes
is to throw UnsupportedOperationException
, which is permitted but doesn't match the abstract specification of the method.
Solution
Change the default implementation of com.sun.management.ThreadMXBean.getCurrentThreadAllocatedBytes
to return the value of getThreadAllocatedBytes(Thread.currentThread().getId())
.
Remove the @implSpec
portion of the Javadoc that described the throwing of the exception.
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>
*
-* @implSpec The default implementation throws
-* {@code UnsupportedOperationException}.
-*
* @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 13.0.6
*/
public default long getCurrentThreadAllocatedBytes() {
return getThreadAllocatedBytes(Thread.currentThread().getId());
}
- csr of
-
JDK-8257407 getCurrentThreadAllocatedBytes default implementation s/b getThreadAllocatedBytes
- Open