org.eclipse.mat.inspections.collectionextract
Class AbstractExtractedCollection<E,X extends ICollectionExtractor>

java.lang.Object
  extended by org.eclipse.mat.inspections.collectionextract.AbstractExtractedCollection<E,X>
All Implemented Interfaces:
Serializable, Iterable<E>, IObject
Direct Known Subclasses:
ExtractedCollection, ExtractedMap

public abstract class AbstractExtractedCollection<E,X extends ICollectionExtractor>
extends Object
implements Iterable<E>, IObject

An abstract class representing a collection extracted from the heap. It provides convenience methods for querying certain properties of the collection (e.g. size) and for extracting the elements of the collection

Since:
1.5
See Also:
Serialized Form

Nested Class Summary
 
Nested classes/interfaces inherited from interface org.eclipse.mat.snapshot.model.IObject
IObject.Type
 
Constructor Summary
AbstractExtractedCollection(IObject collection, X extractor)
           
 
Method Summary
 IObjectArray extractEntries()
          Get the array with contents of the collection
 int[] extractEntryIds()
          Get the object Ids (int) of the contents of the collection
 Integer getCapacity()
          Get the capacity of the collection
 String getClassSpecificName()
          Get class specific name of this object which depends on the availability of the appropriate name resolver, e.g.
 IClass getClazz()
          Get class snapshot object this object is an instance of.
 String getDisplayName()
          Get concatenation of IObject.getTechnicalName() and IObject.getClassSpecificName().
 Double getFillRatio()
          Get the ratio to which the collection is filled (for collections which preallocates a certain capacity)
 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.
 List<NamedReference> getOutboundReferences()
          Get list of snapshot objects referenced from this snapshot object with the name of the field over which it was referenced.
 long getRetainedHeapSize()
          Get retained heap size of this object.
 ISnapshot getSnapshot()
          Returns the snapshot from which this object has been read.
 String getTechnicalName()
          Get technical name of this object which is something like class@address.
 long getUsedHeapSize()
          Get used heap size of just this object.
 boolean hasCapacity()
          Check if the collection has a capacity property, i.e.
 boolean hasExtractableArray()
          Check if the contents of the collection can be extracted as an array (e.g.
 boolean hasExtractableContents()
          Check if the the contents of the collection can be extracted
 boolean hasFillRatio()
          Check if the collision ration can be calculated for the collection
 boolean hasSize()
          Check if the collection has a size property
 Boolean isEmpty()
          Check if the collection is empty
 Object resolveValue(String field)
          Resolves and returns the value of a field specified by a dot notation.
 Integer size()
          Get the size of the collection
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface java.lang.Iterable
iterator
 

Constructor Detail

AbstractExtractedCollection

public AbstractExtractedCollection(IObject collection,
                                   X extractor)
Parameters:
collection - an IObject representing a collection
extractor - used to extract the contents
Method Detail

hasSize

public boolean hasSize()
Check if the collection has a size property

Returns:

hasExtractableContents

public boolean hasExtractableContents()
Check if the the contents of the collection can be extracted

Returns:

hasExtractableArray

public boolean hasExtractableArray()
Check if the contents of the collection can be extracted as an array (e.g. for ArrayList)

Returns:

hasCapacity

public boolean hasCapacity()
Check if the collection has a capacity property, i.e. if it preallocates space for its content

Returns:

hasFillRatio

public boolean hasFillRatio()
Check if the collision ration can be calculated for the collection

Returns:

getCapacity

public Integer getCapacity()
Get the capacity of the collection

Returns:

size

public Integer size()
Get the size of the collection

Returns:

getFillRatio

public Double getFillRatio()
Get the ratio to which the collection is filled (for collections which preallocates a certain capacity)

Returns:

isEmpty

public Boolean isEmpty()
Check if the collection is empty

Returns:

extractEntryIds

public int[] extractEntryIds()
Get the object Ids (int) of the contents of the collection

Returns:

extractEntries

public IObjectArray extractEntries()
Get the array with contents of the collection

Returns:

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)

getUsedHeapSize

public 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

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

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

getClazz

public IClass 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

getTechnicalName

public 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

getClassSpecificName

public 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

getDisplayName

public 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()

getOutboundReferences

public List<NamedReference> getOutboundReferences()
Description copied from interface: IObject
Get list of snapshot objects referenced from this snapshot object with the name of the field over which it was referenced.

Specified by:
getOutboundReferences in interface IObject
Returns:
list of snapshot objects referenced from this snapshot object with the name of the field over which it was referenced

resolveValue

public Object resolveValue(String field)
                    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:
field - 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

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.