-
- All Superinterfaces:
-
PlatformManagedObject
,ThreadMXBean
public interface ThreadMXBeanextends ThreadMXBean
针对Java虚拟机的线程系统的特定于平台的管理接口。此平台扩展仅适用于支持此扩展的线程实现。
- 从以下版本开始:
- 6u25
-
-
方法摘要
所有方法 实例方法 抽象方法 变量和类型 方法 描述 long
getThreadAllocatedBytes(long id)
返回指定ID的线程在堆内存中分配的内存总量(以字节为单位)的近似值。long[]
getThreadAllocatedBytes(long[] ids)
返回ID在输入数组ids
中的每个线程在堆内存中分配的内存总量的近似值(以字节为ids
。long[]
getThreadCpuTime(long[] ids)
返回ID在输入数组ids
中的每个线程的总CPU时间(以纳秒为单位)。long[]
getThreadUserTime(long[] ids)
返回ID在输入数组ids
中的每个线程在用户模式下以纳秒为单位执行的CPU时间。boolean
isThreadAllocatedMemoryEnabled()
测试是否启用了线程内存分配测量。boolean
isThreadAllocatedMemorySupported()
测试Java虚拟机实现是否支持线程内存分配测量。void
setThreadAllocatedMemoryEnabled(boolean enable)
启用或禁用线程内存分配测量。-
声明方法的接口 java.lang.management.PlatformManagedObject
getObjectName
-
声明方法的接口 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
-
-
-
-
方法详细信息
-
getThreadCpuTime
long[] getThreadCpuTime(long[] ids)
返回ID在输入数组ids
中的每个线程的总CPU时间(以纳秒为单位)。 返回值的精度为纳秒,但不一定是纳秒精度。此方法等效于为输入数组
ids
中的每个线程ID调用ThreadMXBean.getThreadCpuTime(long)
方法,并在返回的数组的相应元素中设置返回值。- 参数
-
ids
- 线程ID数组。 - 结果
- 一个long值数组,每个值是ID在输入数组ID的对应元素中使用的线程的CPU时间量,如果指定ID的线程存在,则线程处于活动状态,并且CPU时间测量已启用; 否则为
-1
。 - 异常
-
NullPointerException
- 如果ids
是null
-
IllegalArgumentException
- 如果输入数组ids
中的任何元素是<=
0
。 -
UnsupportedOperationException
- 如果Java虚拟机实现不支持CPU时间测量。 - 另请参见:
-
ThreadMXBean.getThreadCpuTime(long)
,getThreadUserTime(long[])
,ThreadMXBean.isThreadCpuTimeSupported()
,ThreadMXBean.isThreadCpuTimeEnabled()
,ThreadMXBean.setThreadCpuTimeEnabled(boolean)
-
getThreadUserTime
long[] getThreadUserTime(long[] ids)
返回ID在输入数组ids
中的每个线程在用户模式下以纳秒为单位执行的CPU时间。 返回值的精度为纳秒,但不一定是纳秒精度。此方法等效于为输入数组
ids
中的每个线程ID调用ThreadMXBean.getThreadUserTime(long)
方法,并在返回的数组的相应元素中设置返回值。- 参数
-
ids
- 线程ID数组。 - 结果
- 一个长值数组,每个值都是用户模式CPU时间量,其ID在ID输入数组的相应元素中的线程已经使用,如果指定ID的线程存在,则线程处于活动状态,并且启用CPU时间测量; 否则为
-1
。 - 异常
-
NullPointerException
- 如果ids
是null
-
IllegalArgumentException
- 如果输入数组ids
中的任何元素是<=
0
。 -
UnsupportedOperationException
- 如果Java虚拟机实现不支持CPU时间测量。 - 另请参见:
-
ThreadMXBean.getThreadUserTime(long)
,getThreadCpuTime(long[])
,ThreadMXBean.isThreadCpuTimeSupported()
,ThreadMXBean.isThreadCpuTimeEnabled()
,ThreadMXBean.setThreadCpuTimeEnabled(boolean)
-
getThreadAllocatedBytes
long getThreadAllocatedBytes(long id)
返回指定ID的线程在堆内存中分配的内存总量(以字节为单位)的近似值。 返回值是近似值,因为某些Java虚拟机实现可能使用对象分配机制,这会导致在分配对象的时间与其大小记录的时间之间出现延迟。如果指定ID的线程不活动或不存在,则此方法返回
-1
。 如果禁用了线程内存分配测量,则此方法返回-1
。 如果一个线程已经启动并且还没有死亡,它就是活着的。如果在线程启动后启用了线程内存分配测量,则Java虚拟机实现可以选择任何时间,包括启用该功能的时间作为线程内存分配测量开始的点。
- 参数
-
id
- 线程的线程ID - 结果
- 如果指定ID的线程存在,线程处于活动状态,并且线程内存分配测量已启用,则指定ID的线程在堆内存中分配的总内存(以字节为单位)的近似值; 否则为
-1
。 - 异常
-
IllegalArgumentException
- 如果id
<=
0
。 -
UnsupportedOperationException
- 如果Java虚拟机实现不支持线程内存分配测量。 - 另请参见:
-
isThreadAllocatedMemorySupported()
,isThreadAllocatedMemoryEnabled()
,setThreadAllocatedMemoryEnabled(boolean)
-
getThreadAllocatedBytes
long[] getThreadAllocatedBytes(long[] ids)
返回ID在输入数组ids
中的每个线程在堆内存中分配的内存总量的近似值(以字节为ids
。 返回值是近似值,因为某些Java虚拟机实现可能使用对象分配机制,这会导致分配对象的时间与记录其大小的时间之间的延迟。此方法等效于为输入数组
ids
中的每个线程ID调用getThreadAllocatedBytes(long)
方法,并在返回的数组的相应元素中设置返回值。- 参数
-
ids
- 线程ID数组。 - 结果
- 一个long值数组,每个long值都是在堆内存中分配的总内存(以字节为单位)的近似值,用于ID在ID输入数组的相应元素中的线程。
- 异常
-
NullPointerException
- 如果ids
是null
-
IllegalArgumentException
- 如果输入数组ids
中的任何元素是<=
0
。 -
UnsupportedOperationException
- 如果Java虚拟机实现不支持线程内存分配测量。 - 另请参见:
-
getThreadAllocatedBytes(long)
,isThreadAllocatedMemorySupported()
,isThreadAllocatedMemoryEnabled()
,setThreadAllocatedMemoryEnabled(boolean)
-
isThreadAllocatedMemorySupported
boolean isThreadAllocatedMemorySupported()
测试Java虚拟机实现是否支持线程内存分配测量。- 结果
-
true
如果Java虚拟机实现支持线程内存分配测量; 否则为false
。
-
isThreadAllocatedMemoryEnabled
boolean isThreadAllocatedMemoryEnabled()
测试是否启用了线程内存分配测量。- 结果
-
true
如果启用了线程内存分配测量; 否则为false
。 - 异常
-
UnsupportedOperationException
- 如果Java虚拟机不支持线程内存分配测量。 - 另请参见:
-
isThreadAllocatedMemorySupported()
-
setThreadAllocatedMemoryEnabled
void setThreadAllocatedMemoryEnabled(boolean enable)
启用或禁用线程内存分配测量。 默认值取决于平台。- 参数
-
enable
-true
启用;false
禁用。 - 异常
-
UnsupportedOperationException
- 如果Java虚拟机不支持线程内存分配测量。 -
SecurityException
- 如果存在安全管理器且调用者没有ManagementPermission(“control”)。 - 另请参见:
-
isThreadAllocatedMemorySupported()
-
-