# Class MonitorInfo

java.lang.Object
java.lang.management.LockInfo
java.lang.management.MonitorInfo

public class MonitorInfo extends LockInfo
Information about an object monitor lock. An object monitor is locked when entering a synchronization block or method on that object.

## MXBean Mapping

`MonitorInfo` is mapped to a `CompositeData` with attributes as specified in the `from` method.

Since:
  1.6

## Constructor Summary

Constructors
Constructor
Description
`MonitorInfo(String className, int identityHashCode, int stackDepth, StackTraceElement stackFrame)`
Construct a `MonitorInfo` object.

## Method Summary

Modifier and Type
Method
Description
`static MonitorInfo`
`from(CompositeData cd)`
Returns a `MonitorInfo` object represented by the given `CompositeData`.
`int`
`getLockedStackDepth()`
Returns the depth in the stack trace where the object monitor was locked.
`StackTraceElement`
`getLockedStackFrame()`
Returns the stack frame that locked the object monitor.

### Methods declared in class LockInfo

`getClassName, getIdentityHashCode, toString`
Modifier and Type
Method
Description
`String`
`getClassName()`
Returns the fully qualified name of the class of the lock object.
`int`
`getIdentityHashCode()`
Returns the identity hash code of the lock object returned from the `System.identityHashCode(Object)` method.
`String`
`toString()`
Returns a string representation of a lock.

### Methods declared in class Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`
Modifier and Type
Method
Description
`protected Object`
`clone()`
Creates and returns a copy of this object.
`boolean`
`equals(Object obj)`
Indicates whether some other object is "equal to" this one.
`protected void`
`finalize()`
Deprecated, for removal: This API element is subject to removal in a future version.
Finalization is deprecated and subject to removal in a future release.
`final Class<?>`
`getClass()`
Returns the runtime class of this `Object`.
`int`
`hashCode()`
Returns a hash code value for this object.
`final void`
`notify()`
Wakes up a single thread that is waiting on this object's monitor.
`final void`
`notifyAll()`
Wakes up all threads that are waiting on this object's monitor.
`final void`
`wait()`
Causes the current thread to wait until it is awakened, typically by being notified or interrupted.
`final void`
`wait(long timeoutMillis)`
Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.
`final void`
`wait(long timeoutMillis, int nanos)`
Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.

## Constructor Details

### MonitorInfo

public MonitorInfo(String className, int identityHashCode, int stackDepth, StackTraceElement stackFrame)
Construct a `MonitorInfo` object.

Parameters:
  `className` - the fully qualified name of the class of the lock object.
  `identityHashCode` - the `identity hash code` of the lock object.
  `stackDepth` - the depth in the stack trace where the object monitor was locked.
  `stackFrame` - the stack frame that locked the object monitor.
Throws:
  `IllegalArgumentException` - if `stackDepth` ≥ 0 but `stackFrame` is `null`, or `stackDepth` < 0 but `stackFrame` is not `null`.

## Method Details

### getLockedStackDepth

public int getLockedStackDepth()
Returns the depth in the stack trace where the object monitor was locked. The depth is the index to the `StackTraceElement` array returned in the `ThreadInfo.getStackTrace()` method.

Returns:
  the depth in the stack trace where the object monitor was locked, or a negative number if not available.

### getLockedStackFrame

public StackTraceElement getLockedStackFrame()
Returns the stack frame that locked the object monitor.

Returns:
  `StackTraceElement` that locked the object monitor, or `null` if not available.

### from

public static MonitorInfo from(CompositeData cd)
Returns a `MonitorInfo` object represented by the given `CompositeData`. The given `CompositeData` must contain the following attributes as well as the attributes specified in the mapped type for the `LockInfo` class:

The attributes and their types the given CompositeData contains
Attribute Name | Type
--- | ---
lockedStackFrame | `CompositeData` for `StackTraceElement` as specified in `ThreadInfo.from(CompositeData)` method.
lockedStackDepth | `java.lang.Integer`

Parameters:
  `cd` - `CompositeData` representing a `MonitorInfo`
Returns:
  a `MonitorInfo` object represented by `cd` if `cd` is not `null`; `null` otherwise.
Throws:
  `IllegalArgumentException` - if `cd` does not represent a `MonitorInfo` with the attributes described above.