- 所有超级接口:
-
PlatformManagedObject
,ThreadMXBean
Java虚拟机线程系统的特定于平台的管理接口。
此平台扩展仅适用于支持此扩展的线程实现。
- 自:
- 6u25
-
Method Summary
Modifier and TypeMethodDescriptiondefault long
返回当前线程在堆内存中分配的总内存量的近似值(以字节为单位)。long
getThreadAllocatedBytes
(long id) 返回具有指定ID的线程在堆内存中分配的总内存量的近似值(以字节为单位)。long[]
getThreadAllocatedBytes
(long[] ids) 返回输入数组ids
中每个线程分配的堆内存总量的近似值(以字节为单位)。long[]
getThreadCpuTime
(long[] ids) 返回输入数组ids
中每个线程的总CPU时间(以纳秒为单位)。long[]
getThreadUserTime
(long[] ids) 返回输入数组ids
中每个线程在用户模式下执行的CPU时间(以纳秒为单位)。default long
返回Java虚拟机启动以来所有线程在堆内存中分配的总内存量的近似值(以字节为单位)。boolean
检查线程内存分配测量是否已启用。boolean
检查Java虚拟机实现是否支持线程内存分配测量。void
setThreadAllocatedMemoryEnabled
(boolean enable) 启用或禁用线程内存分配测量。Methods declared in interface java.lang.management.PlatformManagedObject
getObjectName
Methods declared in interface java.lang.management.ThreadMXBean
dumpAllThreads, dumpAllThreads, findDeadlockedThreads, findMonitorDeadlockedThreads, getAllThreadIds, getCurrentThreadCpuTime, getCurrentThreadUserTime, getDaemonThreadCount, getPeakThreadCount, getThreadCount, getThreadCpuTime, getThreadInfo, getThreadInfo, getThreadInfo, getThreadInfo, getThreadInfo, getThreadInfo, getThreadUserTime, getTotalStartedThreadCount, isCurrentThreadCpuTimeSupported, isObjectMonitorUsageSupported, isSynchronizerUsageSupported, isThreadContentionMonitoringEnabled, isThreadContentionMonitoringSupported, isThreadCpuTimeEnabled, isThreadCpuTimeSupported, resetPeakThreadCount, setThreadContentionMonitoringEnabled, setThreadCpuTimeEnabled
-
Method Details
-
getThreadCpuTime
long[] getThreadCpuTime(long[] ids) 返回输入数组ids
中每个线程的总CPU时间(以纳秒为单位)。返回的值精确到纳秒,但不一定是纳秒精度。此方法等效于为输入数组
ids
中的每个线程ID调用ThreadMXBean.getThreadCpuTime(long)
方法,并将返回的值设置为返回数组的相应元素。- 参数:
-
ids
- 线程ID数组。 - 返回:
-
一个长整型数组,每个值表示对应于输入ID数组的元素中的线程使用的CPU时间量,如果指定ID的线程是平台线程、线程处于活动状态且启用了CPU时间测量,则返回该值;否则返回
-1
。 - 抛出:
-
NullPointerException
- 如果ids
为null
-
IllegalArgumentException
- 如果输入数组ids
中的任何元素为<=
0
-
UnsupportedOperationException
- 如果Java虚拟机实现不支持CPU时间测量。 - 参见:
-
getThreadUserTime
long[] getThreadUserTime(long[] ids) 返回输入数组ids
中每个线程在用户模式下执行的CPU时间(以纳秒为单位)。返回的值精确到纳秒,但不一定是纳秒精度。此方法等效于为输入数组
ids
中的每个线程ID调用ThreadMXBean.getThreadUserTime(long)
方法,并将返回的值设置为返回数组的相应元素。- 参数:
-
ids
- 线程ID数组。 - 返回:
-
一个长整型数组,每个值表示对应于输入ID数组的元素中的线程使用的用户模式CPU时间量,如果指定ID的线程是平台线程、线程处于活动状态且启用了CPU时间测量,则返回该值;否则返回
-1
。 - 抛出:
-
NullPointerException
- 如果ids
为null
-
IllegalArgumentException
- 如果输入数组ids
中的任何元素为<=
0
-
UnsupportedOperationException
- 如果Java虚拟机实现不支持CPU时间测量。 - 参见:
-
getTotalThreadAllocatedBytes
default long getTotalThreadAllocatedBytes()返回Java虚拟机启动以来所有线程在堆内存中分配的总内存量的近似值(以字节为单位)。返回的值是一个近似值,因为一些Java虚拟机实现可能使用对象分配机制,导致分配对象和记录其大小之间存在延迟。- 实现要求:
-
如果Java虚拟机实现不支持线程内存分配测量,则默认实现会抛出
UnsupportedOperationException
,否则会像线程内存分配测量已禁用一样操作。 - 返回:
-
一个近似值,表示自Java虚拟机启动以来在堆内存中分配的总内存量(以字节为单位),如果启用了线程内存分配测量,则返回该值;否则返回
-1
。 - 抛出:
-
UnsupportedOperationException
- 如果Java虚拟机实现不支持线程内存分配测量。 - 自:
- 21
- 参见:
-
getCurrentThreadAllocatedBytes
default long getCurrentThreadAllocatedBytes()返回当前线程在堆内存中分配的总内存量的近似值(以字节为单位)。返回的值是一个近似值,因为一些Java虚拟机实现可能使用对象分配机制,导致分配对象和记录其大小之间存在延迟。这是一个用于本地管理的便利方法,等效于调用:
getThreadAllocatedBytes
(Thread.currentThread().threadId());- 返回:
-
一个近似值,表示当前线程在堆内存中分配的总内存量(以字节为单位),如果启用了线程内存分配测量,则返回该值;否则返回
-1
。 - 抛出:
-
UnsupportedOperationException
- 如果Java虚拟机实现不支持线程内存分配测量。 - 自:
- 14
- 参见:
-
getThreadAllocatedBytes
long getThreadAllocatedBytes(long id) 返回具有指定ID的线程在堆内存中分配的总内存量的近似值(以字节为单位)。返回的值是一个近似值,因为一些Java虚拟机实现可能使用对象分配机制,导致分配对象和记录其大小之间存在延迟。如果具有指定ID的线程是虚拟线程、不处于活动状态或不存在,则此方法返回
-1
。如果禁用了线程内存分配测量,则此方法返回-1
。线程处于活动状态表示已启动且尚未终止。如果在线程启动后启用了线程内存分配测量,则Java虚拟机实现可以选择任何时间,直到启用该功能为止,作为线程内存分配测量开始的时间点。
- 参数:
-
id
- 线程的线程ID - 返回:
-
如果指定ID的线程是平台线程,线程是活动的,并且启用了线程内存分配测量,则返回对堆内存中为指定ID的线程分配的总内存的近似值,否则返回
-1
。 - 抛出:
-
IllegalArgumentException
- 如果id
<=
0
。 -
UnsupportedOperationException
- 如果Java虚拟机实现不支持线程内存分配测量。 - 参见:
-
getThreadAllocatedBytes
long[] getThreadAllocatedBytes(long[] ids) 返回一个近似值,表示分配给输入数组ids
中每个线程的堆内存中分配的总内存量(以字节为单位)。返回的值是近似值,因为一些Java虚拟机实现可能使用对象分配机制,导致分配对象和记录其大小之间存在延迟。此方法等同于为输入数组
ids
中的每个线程ID调用getThreadAllocatedBytes(long)
方法,并将返回的值设置在返回数组的相应元素中。- 参数:
-
ids
- 一个线程ID数组。 - 返回:
- 一个长整型值数组,每个值是对应于输入ID数组中的线程的堆内存中分配的总内存的近似值(以字节为单位)。
- 抛出:
-
NullPointerException
- 如果ids
为null
-
IllegalArgumentException
- 如果输入数组ids
中的任何元素为<=
0
。 -
UnsupportedOperationException
- 如果Java虚拟机实现不支持线程内存分配测量。 - 参见:
-
isThreadAllocatedMemorySupported
boolean isThreadAllocatedMemorySupported()测试Java虚拟机实现是否支持线程内存分配测量。- 返回:
-
如果Java虚拟机实现支持线程内存分配测量,则返回
true
;否则返回false
。
-
isThreadAllocatedMemoryEnabled
boolean isThreadAllocatedMemoryEnabled()测试线程内存分配测量是否已启用。- 返回:
-
如果线程内存分配测量已启用,则返回
true
;否则返回false
。 - 抛出:
-
UnsupportedOperationException
- 如果Java虚拟机不支持线程内存分配测量。 - 参见:
-
setThreadAllocatedMemoryEnabled
void setThreadAllocatedMemoryEnabled(boolean enable) 启用或禁用线程内存分配测量。默认值取决于平台。- 参数:
-
enable
-true
表示启用;false
表示禁用。 - 抛出:
-
UnsupportedOperationException
- 如果Java虚拟机不支持线程内存分配测量。 -
SecurityException
- 如果存在安全管理器且调用方没有ManagementPermission("control")。 - 参见:
-