com.jrockit.memleak.util
Class DummyObjectInfo

java.lang.Object
  extended by com.jrockit.memleak.util.DummyObjectInfo
All Implemented Interfaces:
IObjectInfo, IObjectSpecifier, IDummy

public class DummyObjectInfo
extends java.lang.Object
implements IObjectInfo, IDummy

Dummy implementation of IObjectInfo.

Author:
mpersson

Field Summary
 
Fields inherited from interface com.jrockit.memleak.IObjectInfo
EMPTY_ARRAY
 
Constructor Summary
DummyObjectInfo(java.lang.String name, IClassInfo classInfo)
           
 
Method Summary
static DummyObjectInfo createNested(java.lang.String name, int depth)
          Create a dummy IObjectInfo with a dummy IClassInfo as class, both with the display name name.
 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).
 int getObjectId()
           
 boolean isDiscarded()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DummyObjectInfo

public DummyObjectInfo(java.lang.String name,
                       IClassInfo classInfo)
Parameters:
name -
classInfo -
Method Detail

createNested

public static final DummyObjectInfo createNested(java.lang.String name,
                                                 int depth)
Create a dummy IObjectInfo with a dummy IClassInfo as class, both with the display name name. The class will have a class loader, also an IObjectInfo, which will have a class and so forth, until depth dummy instances have been created.

Note that a similar effect could be produced by circular references, but it isn't recommended since that wouldn't be possible in a real JVM. Also someone might attempt to navigate this structure until the bootstrap class loader, normally designated by null, is found. (Although that type of navigation should stop once it sees anything implementing IDummy.)

Parameters:
name - the display name to use for objects and classes
depth - the total number of dummy instances to create
Returns:
a IObjectInfo or null if depth is zero.

getClassInfo

public IClassInfo getClassInfo()
Specified by:
getClassInfo in interface IObjectInfo
Returns:
the IClassInfo for the class of this object.

getObjectId

public int getObjectId()
Specified by:
getObjectId in interface IObjectSpecifier
Returns:
the ID of this object.

isDiscarded

public boolean isDiscarded()
Specified by:
isDiscarded in interface IObjectInfo
Returns:
true iff the object is known to have been garbage collected.

getFieldValues

public IFieldValue[] getFieldValues(Policy policy)
Description copied from interface: IObjectInfo
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.

Specified by:
getFieldValues in interface IObjectInfo
Parameters:
policy - the cache policy to use
Returns:
an array of IFieldValues representing the fields, or null according to policy

getFieldValue

public IFieldValue getFieldValue(java.lang.String fieldName,
                                 java.lang.Class<?> type,
                                 Policy policy)
                          throws GarbageCollectedException,
                                 NoMatchingFieldException
Description copied from interface: IObjectInfo
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.

Specified by:
getFieldValue in interface IObjectInfo
Parameters:
fieldName - the name of the field
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

public <T> T getField(java.lang.String fieldName,
                      java.lang.Class<T> type,
                      Policy policy)
           throws NoMatchingFieldException
Description copied from interface: IObjectInfo
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.

Specified by:
getField in interface IObjectInfo
Type Parameters:
T - implicit
Parameters:
fieldName - the name of the field
policy - the cache policy to use
Returns:
an instance of T (that is, a primitive wrapper or an IObjectInfo), or null
Throws:
NoMatchingFieldException - if no field with the given name and a matching type could be found

getFieldReference

public IObjectInfo getFieldReference(java.lang.String fieldName,
                                     Policy policy)
                              throws NoMatchingFieldException
Description copied from interface: IObjectInfo
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.

Specified by:
getFieldReference in interface IObjectInfo
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:
NoMatchingFieldException - if no non-primitive field with the given name could be found

getKeepAliveSize

public LimitedNumber getKeepAliveSize(long stopAt,
                                      Policy policy)
Description copied from interface: IObjectInfo
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.)

Specified by:
getKeepAliveSize in interface IObjectInfo
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.