com.jrockit.memleak
Interface IObjectInfo

All Superinterfaces:
IObjectSpecifier
All Known Subinterfaces:
IArrayInfo, IClassObjectInfo
All Known Implementing Classes:
AbstractObjectInfo, ArrayInfo, ClassObjectInfo, DummyObjectInfo, ObjectInfo

public interface IObjectInfo
extends IObjectSpecifier

Representation of an object reference, including its class and ID.

Author:
Markus Persson

Field Summary
static IObjectInfo[] EMPTY_ARRAY
          An empty IObjectInfo array.
 
Method Summary
 IClassInfo getClassInfo()
           
<T> T
getField(java.lang.String fieldName, java.lang.Class<T> type, Policy policy)
          Get the actual primitive wrapper or object representation of of the most visible field that has the name fieldName and is assignable to the class type as per IValue.isAssignableTo(Class) in the object represented by this IObjectInfo.
 IObjectInfo getFieldReference(java.lang.String fieldName, Policy policy)
          Get the IObjectInfo corresponding to the value of the most visible non-primitive field with the name fieldName in the object represented by this IObjectInfo.
 IFieldValue getFieldValue(java.lang.String fieldName, java.lang.Class<?> type, Policy policy)
          Get the IFieldValue of the most visible field that has the name fieldName and is assignable to the class type as per IValue.isAssignableTo(Class) in the object represented by this IObjectInfo.
 IFieldValue[] getFieldValues(Policy policy)
          Get the values and names for all the fields in the object represented by this IObjectInfo.
 LimitedNumber getKeepAliveSize(long stopAt, Policy policy)
          Get the total size of all objects held on to by this object (the transitive closure).
 boolean isDiscarded()
           
 
Methods inherited from interface com.jrockit.memleak.IObjectSpecifier
getObjectId
 

Field Detail

EMPTY_ARRAY

static final IObjectInfo[] EMPTY_ARRAY
An empty IObjectInfo array.

Method Detail

getClassInfo

IClassInfo getClassInfo()
Returns:
the IClassInfo for the class of this object.

isDiscarded

boolean isDiscarded()
Returns:
true iff the object is known to have been garbage collected.

getFieldValues

IFieldValue[] getFieldValues(Policy policy)
                             throws GarbageCollectedException
Get the values and names for all the fields in the object represented by this IObjectInfo.

Note that null may be returned, if the policy allows it.

Parameters:
policy - the cache policy to use
Returns:
an array of IFieldValues representing the fields, or null according to policy
Throws:
InspectException
java.io.IOException
java.lang.IllegalStateException - if this object reference has been invalidated.
GarbageCollectedException - if the object has been garbage collected.

getFieldValue

IFieldValue getFieldValue(java.lang.String fieldName,
                          java.lang.Class<?> type,
                          Policy policy)
                          throws GarbageCollectedException,
                                 NoMatchingFieldException
Get the IFieldValue of the most visible field that has the name fieldName and is assignable to the class type as per IValue.isAssignableTo(Class) in the object represented by this IObjectInfo.

The most visible field is defined from a Java source perspective in that it normally would be the field that is in scope from within the actual class. More specifically, starting from the actual class and moving up the super class hierarchy, the first non-synthetic field with fieldName and a matching type, is returned. If no such field is found, the first synthetic field of that name and with a matching type, found by looking in the same order, is returned. If no field with that name and a matching type could be found at all, NoMatchingFieldException is thrown.

Parameters:
fieldName - the name of the field
type -
policy - the cache policy to use
Returns:
a IFieldValue, unless the value is currently unavailable according to policy, in which case null is returned.
Throws:
GarbageCollectedException - if the object has been garbage collected.
NoMatchingFieldException - if no field with the given name and a matching type could be found

getField

<T> T getField(java.lang.String fieldName,
               java.lang.Class<T> type,
               Policy policy)
           throws GarbageCollectedException,
                  NoMatchingFieldException
Get the actual primitive wrapper or object representation of of the most visible field that has the name fieldName and is assignable to the class type as per IValue.isAssignableTo(Class) in the object represented by this IObjectInfo.

The most visible field is defined from a Java source perspective in that it normally would be the field that is in scope from within the actual class. More specifically, starting from the actual class and moving up the super class hierarchy, the value of the first non-synthetic field with fieldName and a matching type, is returned. If no such field is found, the value of the first synthetic field of that name and with a matching type, found by looking in the same order, is returned. If no field with that name and a matching type could be found at all, NoMatchingFieldException is thrown.

Type Parameters:
T - implicit
Parameters:
fieldName - the name of the field
type -
policy - the cache policy to use
Returns:
an instance of T (that is, a primitive wrapper or an IObjectInfo), or null
Throws:
java.lang.IllegalStateException - if this object reference has been invalidated.
GarbageCollectedException - if the object has been garbage collected.
NoMatchingFieldException - if no field with the given name and a matching type could be found

getFieldReference

IObjectInfo getFieldReference(java.lang.String fieldName,
                              Policy policy)
                              throws GarbageCollectedException,
                                     NoMatchingFieldException
Get the IObjectInfo corresponding to the value of the most visible non-primitive field with the name fieldName in the object represented by this IObjectInfo.

The most visible field is defined from a Java source perspective in that it normally would be the field that is in scope from within the actual class. More specifically, starting from the actual class and moving up the super class hierarchy, the first non-synthetic and non-primitive field with fieldName is returned. If no such field is found, the first synthetic non-primitive field of that name, found by looking in the same order, is returned. If no non-primitive field with that name could be found at all, NoMatchingFieldException is thrown.

Parameters:
fieldName - the name of the field
policy - the cache policy to use
Returns:
an IObjectInfo representing the field, or null according to policy
Throws:
java.lang.IllegalStateException - if this object reference has been invalidated.
GarbageCollectedException - if the object has been garbage collected.
NoMatchingFieldException - if no non-primitive field with the given name could be found

getKeepAliveSize

LimitedNumber getKeepAliveSize(long stopAt,
                               Policy policy)
Get the total size of all objects held on to by this object (the transitive closure). If stopAt >= 0 than counting will stop if the total size is larger than stopAt.

Note that a cached value below stopAt will only be returned if it is lower than the limit in effect when that value was originally calculated. (That is, if it wasn't limited by the lower limit.)

Parameters:
stopAt - the limit in bytes for keep alive size calculation, see above
policy - the Policy to use
Returns:
the total size in bytes of all objects held on to by this object, or null according to policy


Copyright © 1999, 2011, Oracle and/or its affiliates. All rights reserved.