Methods Summary |
---|
public java.lang.management.ThreadInfo[] | dumpAllThreads(boolean lockedMonitors, boolean lockedSynchronizers)Returns the thread info for all live threads with stack trace
and synchronization information.
Some threads included in the returned array
may have been terminated when this method returns.
This method returns an array of {@link ThreadInfo} objects
as specified in the {@link #getThreadInfo(long[], boolean, boolean)}
method.
|
public long[] | findDeadlockedThreads()Finds cycles of threads that are in deadlock waiting to acquire
object monitors or
ownable synchronizers.
Threads are deadlocked in a cycle waiting for a lock of
these two types if each thread owns one lock while
trying to acquire another lock already held
by another thread in the cycle.
This method is designed for troubleshooting use, but not for
synchronization control. It might be an expensive operation.
|
public long[] | findMonitorDeadlockedThreads()Finds cycles of threads that are in deadlock waiting to acquire
object monitors. That is, threads that are blocked waiting to enter a
synchronization block or waiting to reenter a synchronization block
after an {@link Object#wait Object.wait} call,
where each thread owns one monitor while
trying to obtain another monitor already held by another thread
in a cycle.
More formally, a thread is monitor deadlocked if it is
part of a cycle in the relation "is waiting for an object monitor
owned by". In the simplest case, thread A is blocked waiting
for a monitor owned by thread B, and thread B is blocked waiting
for a monitor owned by thread A.
This method is designed for troubleshooting use, but not for
synchronization control. It might be an expensive operation.
This method finds deadlocks involving only object monitors.
To find deadlocks involving both object monitors and
ownable synchronizers,
the {@link #findDeadlockedThreads findDeadlockedThreads} method
should be used.
|
public long[] | getAllThreadIds()Returns all live thread IDs.
Some threads included in the returned array
may have been terminated when this method returns.
|
public long | getCurrentThreadCpuTime()Returns the total CPU time for the current thread in nanoseconds.
The returned value is of nanoseconds precision but
not necessarily nanoseconds accuracy.
If the implementation distinguishes between user mode time and system
mode time, the returned CPU time is the amount of time that
the current thread has executed in user mode or system mode.
This is a convenient method for local management use and is
equivalent to calling:
{@link #getThreadCpuTime getThreadCpuTime}(Thread.currentThread().getId());
|
public long | getCurrentThreadUserTime()Returns the CPU time that the current thread has executed
in user mode in nanoseconds.
The returned value is of nanoseconds precision but
not necessarily nanoseconds accuracy.
This is a convenient method for local management use and is
equivalent to calling:
{@link #getThreadUserTime getThreadUserTime}(Thread.currentThread().getId());
|
public int | getDaemonThreadCount()Returns the current number of live daemon threads.
|
public int | getPeakThreadCount()Returns the peak live thread count since the Java virtual machine
started or peak was reset.
|
public int | getThreadCount()Returns the current number of live threads including both
daemon and non-daemon threads.
|
public long | getThreadCpuTime(long id)Returns the total CPU time for a thread of the specified ID in nanoseconds.
The returned value is of nanoseconds precision but
not necessarily nanoseconds accuracy.
If the implementation distinguishes between user mode time and system
mode time, the returned CPU time is the amount of time that
the thread has executed in user mode or system mode.
If the thread of the specified ID is not alive or does not exist,
this method returns -1. If CPU time measurement
is disabled, this method returns -1.
A thread is alive if it has been started and has not yet died.
If CPU time measurement is enabled after the thread has started,
the Java virtual machine implementation may choose any time up to
and including the time that the capability is enabled as the point
where CPU time measurement starts.
|
public java.lang.management.ThreadInfo[] | getThreadInfo(long[] ids, boolean lockedMonitors, boolean lockedSynchronizers)Returns the thread info for each thread
whose ID is in the input array ids, with stack trace
and synchronization information.
This method obtains a snapshot of the thread information
for each thread including:
- the entire stack trace,
- the object monitors currently locked by the thread
if lockedMonitors is true, and
- the
ownable synchronizers currently locked by the thread
if lockedSynchronizers is true.
This method returns an array of the ThreadInfo objects,
each is the thread information about the thread with the same index
as in the ids array.
If a thread of the given ID is not alive or does not exist,
null will be set in the corresponding element
in the returned array. A thread is alive if
it has been started and has not yet died.
If a thread does not lock any object monitor or lockedMonitors
is false, the returned ThreadInfo object will have an
empty MonitorInfo array. Similarly, if a thread does not
lock any synchronizer or lockedSynchronizers is false,
the returned ThreadInfo object
will have an empty LockInfo array.
When both lockedMonitors and lockedSynchronizers
parameters are false, it is equivalent to calling:
{@link #getThreadInfo(long[], int) getThreadInfo(ids, Integer.MAX_VALUE)}
This method is designed for troubleshooting use, but not for
synchronization control. It might be an expensive operation.
MBeanServer access:
The mapped type of ThreadInfo is
CompositeData with attributes as specified in the
{@link ThreadInfo#from ThreadInfo.from} method.
|
public java.lang.management.ThreadInfo | getThreadInfo(long id)Returns the thread info for a thread of the specified
id with no stack trace.
This method is equivalent to calling:
{@link #getThreadInfo(long, int) getThreadInfo(id, 0);}
This method returns a ThreadInfo object representing
the thread information for the thread of the specified ID.
The stack trace, locked monitors, and locked synchronizers
in the returned ThreadInfo object will
be empty.
If a thread of the given ID is not alive or does not exist,
this method will return null. A thread is alive if
it has been started and has not yet died.
MBeanServer access:
The mapped type of ThreadInfo is
CompositeData with attributes as specified in the
{@link ThreadInfo#from ThreadInfo.from} method.
|
public java.lang.management.ThreadInfo[] | getThreadInfo(long[] ids)Returns the thread info for each thread
whose ID is in the input array ids with no stack trace.
This method is equivalent to calling:
{@link #getThreadInfo(long[], int) getThreadInfo}(ids, 0);
This method returns an array of the ThreadInfo objects.
The stack trace, locked monitors, and locked synchronizers
in each ThreadInfo object will be empty.
If a thread of a given ID is not alive or does not exist,
the corresponding element in the returned array will
contain null. A thread is alive if
it has been started and has not yet died.
MBeanServer access:
The mapped type of ThreadInfo is
CompositeData with attributes as specified in the
{@link ThreadInfo#from ThreadInfo.from} method.
|
public java.lang.management.ThreadInfo | getThreadInfo(long id, int maxDepth)Returns a thread info for a thread of the specified id,
with stack trace of a specified number of stack trace elements.
The maxDepth parameter indicates the maximum number of
{@link StackTraceElement} to be retrieved from the stack trace.
If maxDepth == Integer.MAX_VALUE, the entire stack trace of
the thread will be dumped.
If maxDepth == 0, no stack trace of the thread
will be dumped.
This method does not obtain the locked monitors and locked
synchronizers of the thread.
When the Java virtual machine has no stack trace information
about a thread or maxDepth == 0,
the stack trace in the
ThreadInfo object will be an empty array of
StackTraceElement.
If a thread of the given ID is not alive or does not exist,
this method will return null. A thread is alive if
it has been started and has not yet died.
MBeanServer access:
The mapped type of ThreadInfo is
CompositeData with attributes as specified in the
{@link ThreadInfo#from ThreadInfo.from} method.
|
public java.lang.management.ThreadInfo[] | getThreadInfo(long[] ids, int maxDepth)Returns the thread info for each thread
whose ID is in the input array ids,
with stack trace of a specified number of stack trace elements.
The maxDepth parameter indicates the maximum number of
{@link StackTraceElement} to be retrieved from the stack trace.
If maxDepth == Integer.MAX_VALUE, the entire stack trace of
the thread will be dumped.
If maxDepth == 0, no stack trace of the thread
will be dumped.
This method does not obtain the locked monitors and locked
synchronizers of the threads.
When the Java virtual machine has no stack trace information
about a thread or maxDepth == 0,
the stack trace in the
ThreadInfo object will be an empty array of
StackTraceElement.
This method returns an array of the ThreadInfo objects,
each is the thread information about the thread with the same index
as in the ids array.
If a thread of the given ID is not alive or does not exist,
null will be set in the corresponding element
in the returned array. A thread is alive if
it has been started and has not yet died.
MBeanServer access:
The mapped type of ThreadInfo is
CompositeData with attributes as specified in the
{@link ThreadInfo#from ThreadInfo.from} method.
|
public long | getThreadUserTime(long id)Returns the CPU time that a thread of the specified ID
has executed in user mode in nanoseconds.
The returned value is of nanoseconds precision but
not necessarily nanoseconds accuracy.
If the thread of the specified ID is not alive or does not exist,
this method returns -1. If CPU time measurement
is disabled, this method returns -1.
A thread is alive if it has been started and has not yet died.
If CPU time measurement is enabled after the thread has started,
the Java virtual machine implementation may choose any time up to
and including the time that the capability is enabled as the point
where CPU time measurement starts.
|
public long | getTotalStartedThreadCount()Returns the total number of threads created and also started
since the Java virtual machine started.
|
public boolean | isCurrentThreadCpuTimeSupported()Tests if the Java virtual machine supports CPU time
measurement for the current thread.
This method returns true if {@link #isThreadCpuTimeSupported}
returns true.
|
public boolean | isObjectMonitorUsageSupported()Tests if the Java virtual machine supports monitoring of
object monitor usage.
|
public boolean | isSynchronizerUsageSupported()Tests if the Java virtual machine supports monitoring of
ownable synchronizer usage.
|
public boolean | isThreadContentionMonitoringEnabled()Tests if thread contention monitoring is enabled.
|
public boolean | isThreadContentionMonitoringSupported()Tests if the Java virtual machine supports thread contention monitoring.
|
public boolean | isThreadCpuTimeEnabled()Tests if thread CPU time measurement is enabled.
|
public boolean | isThreadCpuTimeSupported()Tests if the Java virtual machine implementation supports CPU time
measurement for any thread.
A Java virtual machine implementation that supports CPU time
measurement for any thread will also support CPU time
measurement for the current thread.
|
public void | resetPeakThreadCount()Resets the peak thread count to the current number of
live threads.
|
public void | setThreadContentionMonitoringEnabled(boolean enable)Enables or disables thread contention monitoring.
Thread contention monitoring is disabled by default.
|
public void | setThreadCpuTimeEnabled(boolean enable)Enables or disables thread CPU time measurement. The default
is platform dependent.
|