org.eclipse.mat.parser.model
Class AbstractObjectImpl

java.lang.Object
  extended by org.eclipse.mat.parser.model.AbstractObjectImpl
All Implemented Interfaces:
java.io.Serializable, IObject
Direct Known Subclasses:
AbstractArrayImpl, ClassImpl, InstanceImpl

public abstract class AbstractObjectImpl
extends java.lang.Object
implements IObject, java.io.Serializable

The general implementation of any Java object (plain object, array, class, classloader).

See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from interface org.eclipse.mat.snapshot.model.IObject
IObject.Type
 
Constructor Summary
AbstractObjectImpl(int objectId, long address, ClassImpl classInstance)
          Construct a general object, called from subclass.
 
Method Summary
 boolean equals(java.lang.Object obj)
           
 long getClassAddress()
          Returns the address of the class which is the type of this object.
 int getClassId()
          Returns the id of the class which is the type of this object.
 java.lang.String getClassSpecificName()
          Get class specific name of this object which depends on the availability of the appropriate name resolver, e.g.
 ClassImpl getClazz()
          Get class snapshot object this object is an instance of.
static java.util.Comparator<AbstractObjectImpl> getComparatorForClassSpecificName()
          Deprecated. 
static java.util.Comparator<AbstractObjectImpl> getComparatorForTechnicalName()
          Deprecated. 
static java.util.Comparator<AbstractObjectImpl> getComparatorForUsedHeapSize()
          Deprecated. 
 java.lang.String getDisplayName()
          Get concatenation of IObject.getTechnicalName() and IObject.getClassSpecificName().
 GCRootInfo[] getGCRootInfo()
          Get GCRootInfo if the object is a garbage collection root or null otherwise.
 long getObjectAddress()
          Get address for the snapshot object.
 int getObjectId()
          Get id for the snapshot object.
abstract  ArrayLong getReferences()
          Gets the outbound references from this object, as addresses.
 long getRetainedHeapSize()
          Get retained heap size of this object.
 ISnapshot getSnapshot()
          Returns the snapshot from which this object has been read.
 java.lang.String getTechnicalName()
          Get technical name of this object which is something like class@address.
abstract  long getUsedHeapSize()
          Get used heap size of just this object.
 int hashCode()
           
 java.lang.Object resolveValue(java.lang.String name)
          Resolves and returns the value of a field specified by a dot notation.
 void setClassInstance(ClassImpl classInstance)
          Changes the type of the object.
 void setObjectAddress(long address)
          Used to set the address, for example after reconstructing an object from a file.
 void setObjectId(int objectId)
          Set the index for the object
 void setSnapshot(ISnapshot dump)
          Set the snapshot for an object.
 java.lang.String toString()
           
 
Methods inherited from class java.lang.Object
getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.eclipse.mat.snapshot.model.IObject
getOutboundReferences
 

Constructor Detail

AbstractObjectImpl

public AbstractObjectImpl(int objectId,
                          long address,
                          ClassImpl classInstance)
Construct a general object, called from subclass.

Parameters:
objectId - the index of the object
address - the actual address
classInstance - the type of the object
Method Detail

getObjectAddress

public long getObjectAddress()
Description copied from interface: IObject
Get address for the snapshot object. This is the address at which the object was stored in memory. Use the address only for visualization purposes and try to use the id wherever possible as the snapshot API is optimized to handle ids and not addresses. Addresses are bigger ( long), have no consecutive order (with gaps), and are not used for hashing.

Specified by:
getObjectAddress in interface IObject
Returns:
address for the snapshot object

getObjectId

public int getObjectId()
Description copied from interface: IObject
Get id for the snapshot object. The id is not the address, but an internally assigned number fitting into an int (this helps reducing the memory footprint of the snapshot considerably - addresses are only used for visualization purposes).

Specified by:
getObjectId in interface IObject
Returns:
id for the snapshot object

setObjectAddress

public void setObjectAddress(long address)
Used to set the address, for example after reconstructing an object from a file.

Parameters:
address -

setObjectId

public void setObjectId(int objectId)
Set the index for the object

Parameters:
objectId - the index into all the indexes for other object data

getClazz

public ClassImpl getClazz()
Description copied from interface: IObject
Get class snapshot object this object is an instance of.

Specified by:
getClazz in interface IObject
Returns:
class snapshot object this object is an instance of

getClassAddress

public long getClassAddress()
Returns the address of the class which is the type of this object.

Returns:
the address

getClassId

public int getClassId()
Returns the id of the class which is the type of this object.

Returns:
the id

setClassInstance

public void setClassInstance(ClassImpl classInstance)
Changes the type of the object. Used when constructing a ClassImpl for java.lang.Class.

Parameters:
classInstance -

setSnapshot

public void setSnapshot(ISnapshot dump)
Set the snapshot for an object. Used once the entire snapshot has been built, or an object has been deserialized.

Parameters:
dump - the actual current snapshot

getSnapshot

public ISnapshot getSnapshot()
Description copied from interface: IObject
Returns the snapshot from which this object has been read.

Specified by:
getSnapshot in interface IObject
Returns:
the snapshot from which this object has been read.

getUsedHeapSize

public abstract long getUsedHeapSize()
Description copied from interface: IObject
Get used heap size of just this object.

Specified by:
getUsedHeapSize in interface IObject
Returns:
used heap size of this object
Since:
1.0

getRetainedHeapSize

public long getRetainedHeapSize()
Description copied from interface: IObject
Get retained heap size of this object.

Specified by:
getRetainedHeapSize in interface IObject
Returns:
retained heap size of this object (returns 0 if the dominator tree wasn't calculated for the corresponding snapshot)

getReferences

public abstract ArrayLong getReferences()
Gets the outbound references from this object, as addresses.

Returns:
a list of outbound references

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object

getClassSpecificName

public java.lang.String getClassSpecificName()
Description copied from interface: IObject
Get class specific name of this object which depends on the availability of the appropriate name resolver, e.g. for a String the value of the char[].

Specified by:
getClassSpecificName in interface IObject
Returns:
class specific name of the given snapshot object or null if it can't be resolved

getTechnicalName

public java.lang.String getTechnicalName()
Description copied from interface: IObject
Get technical name of this object which is something like class@address.

Specified by:
getTechnicalName in interface IObject
Returns:
technical name of this object which is something like class@address

getDisplayName

public java.lang.String getDisplayName()
Description copied from interface: IObject
Get concatenation of IObject.getTechnicalName() and IObject.getClassSpecificName().

Specified by:
getDisplayName in interface IObject
Returns:
concatenation of IObject.getTechnicalName() and IObject.getClassSpecificName()

resolveValue

public final java.lang.Object resolveValue(java.lang.String name)
                                    throws SnapshotException
Description copied from interface: IObject
Resolves and returns the value of a field specified by a dot notation. If the field is a primitive type, the value the returns the corresponding object wrapper, e.g. a java.lang.Boolean is returned for a field of type boolean. If the field is an object reference, the corresponding IObject is returned.

The field can be specified using the dot notation, i.e. object references are followed and its fields are evaluated. If any of the object references is null, null is returned.

Specified by:
resolveValue in interface IObject
Parameters:
name - the field name in dot notation
Returns:
the value of the field
Throws:
SnapshotException

getGCRootInfo

public GCRootInfo[] getGCRootInfo()
                           throws SnapshotException
Description copied from interface: IObject
Get GCRootInfo if the object is a garbage collection root or null otherwise. An object may or may not be a garbage collection root, it may even be one for multiple reasons (described in the GCRootInfo object).

Specified by:
getGCRootInfo in interface IObject
Returns:
GCRootInfo if the object is a garbage collection root or null otherwise
Throws:
SnapshotException

equals

public boolean equals(java.lang.Object obj)
Overrides:
equals in class java.lang.Object

hashCode

public int hashCode()
Overrides:
hashCode in class java.lang.Object

getComparatorForTechnicalName

@Deprecated
public static java.util.Comparator<AbstractObjectImpl> getComparatorForTechnicalName()
Deprecated. 

Gets a comparator for sorting objects by technical name - type plus address. Appears to be unused, and currently only returns null, so do not use.

Returns:
null

getComparatorForClassSpecificName

@Deprecated
public static java.util.Comparator<AbstractObjectImpl> getComparatorForClassSpecificName()
Deprecated. 

Gets a comparator for sorting objects by resolved name description. Appears to be unused, and currently only returns null, so do not use.

Returns:
null

getComparatorForUsedHeapSize

@Deprecated
public static java.util.Comparator<AbstractObjectImpl> getComparatorForUsedHeapSize()
Deprecated. 

Gets a comparator for sorting objects by used heap size. Appears to be unused, and currently only returns null, so do not use.

Returns:
null