FileDocCategorySizeDatePackage
MonitorInfo.javaAPI DocJava SE 6 API5173Tue Jun 10 00:25:38 BST 2008java.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 {@link CompositeData CompositeData} with attributes as specified in the {@link #from from} method.
author
Mandy Chung
version
1.5, 05/05/06
since
1.6

Fields Summary
private int
stackDepth
private StackTraceElement
stackFrame
Constructors Summary
public MonitorInfo(String className, int identityHashCode, int stackDepth, StackTraceElement stackFrame)
Construct a MonitorInfo object.

param
className the fully qualified name of the class of the lock object.
param
identityHashCode the {@link System#identityHashCode identity hash code} of the lock object.
param
stackDepth the depth in the stack trace where the object monitor was locked.
param
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.

        super(className, identityHashCode);
        if (stackDepth >= 0 && stackFrame == null) {
            throw new IllegalArgumentException("Parameter stackDepth is " +
                stackDepth + " but stackFrame is null");
        }
        if (stackDepth < 0 && stackFrame != null) {
            throw new IllegalArgumentException("Parameter stackDepth is " +
                stackDepth + " but stackFrame is not null");
        }
        this.stackDepth = stackDepth;
        this.stackFrame = stackFrame;
    
Methods Summary
public static java.lang.management.MonitorInfofrom(javax.management.openmbean.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 {@link LockInfo} class:
Attribute Name Type
lockedStackFrame CompositeData as specified in the stackTrace attribute defined in the {@link ThreadInfo#from ThreadInfo.from} method.
lockedStackDepth java.lang.Integer

param
cd CompositeData representing a MonitorInfo
throws
IllegalArgumentException if cd does not represent a MonitorInfo with the attributes described above.
return
a MonitorInfo object represented by cd if cd is not null; null otherwise.

        if (cd == null) {
            return null;
        }

        if (cd instanceof MonitorInfoCompositeData) {
            return ((MonitorInfoCompositeData) cd).getMonitorInfo();
        } else {
            MonitorInfoCompositeData.validateCompositeData(cd);
            String className = MonitorInfoCompositeData.getClassName(cd);
            int identityHashCode = MonitorInfoCompositeData.getIdentityHashCode(cd);
            int stackDepth = MonitorInfoCompositeData.getLockedStackDepth(cd);
            StackTraceElement stackFrame = MonitorInfoCompositeData.getLockedStackFrame(cd);
            return new MonitorInfo(className,
                                   identityHashCode,
                                   stackDepth,
                                   stackFrame);
        }
    
public intgetLockedStackDepth()
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 {@link ThreadInfo#getStackTrace} method.

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

        return stackDepth;
    
public java.lang.StackTraceElementgetLockedStackFrame()
Returns the stack frame that locked the object monitor.

return
StackTraceElement that locked the object monitor, or null if not available.

        return stackFrame;