# 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.