Class IdentityHashMapCollectionExtractor
- java.lang.Object
-
- org.eclipse.mat.internal.collectionextract.FieldArrayCollectionExtractor
-
- org.eclipse.mat.internal.collectionextract.FieldSizeArrayCollectionExtractor
-
- org.eclipse.mat.internal.collectionextract.IdentityHashMapCollectionExtractor
-
- All Implemented Interfaces:
ICollectionExtractor
,IMapExtractor
public class IdentityHashMapCollectionExtractor extends FieldSizeArrayCollectionExtractor implements IMapExtractor
Info for IdentityHashMaps These are stored as key/value pairs in an array
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface org.eclipse.mat.inspections.collectionextract.IMapExtractor
IMapExtractor.EntryObject
-
-
Constructor Summary
Constructors Constructor Description IdentityHashMapCollectionExtractor(String sizeField, String arrayField)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description int[]
extractEntryIds(IObject idMap)
Returns the object ids (int) for all objects which are contained in the collectionIterator<Map.Entry<IObject,IObject>>
extractMapEntries(IObject coll)
Extracts the contents of a map (i.e.Integer
getCapacity(IObject collection)
Gets the capacity of the map.Double
getCollisionRatio(IObject coll)
Complete guess as to collision ratio.Double
getFillRatio(IObject coll)
Calculate the fill ratio of a collectionInteger
getNumberOfNotNullElements(IObject coll)
Returns the number of non-null elements in the collection.Integer
getSize(IObject coll)
Extract the size of the collection.boolean
hasCollisionRatio()
Can't calculate the collision ratio as we don't have the identityHashCode for the keys, even if we did know the hash algorithm.boolean
hasExtractableArray()
Return true if the collection array based and the array can be extracted from the heap dumpboolean
hasExtractableContents()
Check if the collection has extractable contents-
Methods inherited from class org.eclipse.mat.internal.collectionextract.FieldSizeArrayCollectionExtractor
hasSize
-
Methods inherited from class org.eclipse.mat.internal.collectionextract.FieldArrayCollectionExtractor
extractEntries, hasCapacity, hasFillRatio
-
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.eclipse.mat.inspections.collectionextract.ICollectionExtractor
extractEntries, hasCapacity, hasFillRatio, hasSize
-
-
-
-
Method Detail
-
getCapacity
public Integer getCapacity(IObject collection) throws SnapshotException
Gets the capacity of the map. Needs two array elements for each entry.- Specified by:
getCapacity
in interfaceICollectionExtractor
- Overrides:
getCapacity
in classFieldArrayCollectionExtractor
- Parameters:
collection
- - the collection to find the capacity of- Returns:
- the capacity in bytes, or null if unavailable
- Throws:
SnapshotException
- if there is a problem retrieving data from the snapshot- See Also:
ICollectionExtractor.hasCapacity()
-
hasExtractableArray
public boolean hasExtractableArray()
Description copied from interface:ICollectionExtractor
Return true if the collection array based and the array can be extracted from the heap dump- Specified by:
hasExtractableArray
in interfaceICollectionExtractor
- Overrides:
hasExtractableArray
in classFieldArrayCollectionExtractor
- Returns:
- true if
ICollectionExtractor.extractEntries(IObject)
could be called - See Also:
ICollectionExtractor.extractEntries(IObject)
-
hasExtractableContents
public boolean hasExtractableContents()
Description copied from interface:ICollectionExtractor
Check if the collection has extractable contents- Specified by:
hasExtractableContents
in interfaceICollectionExtractor
- Overrides:
hasExtractableContents
in classFieldArrayCollectionExtractor
- Returns:
- true if
ICollectionExtractor.extractEntryIds(IObject)
could be called - See Also:
ICollectionExtractor.extractEntryIds(IObject)
-
getSize
public Integer getSize(IObject coll) throws SnapshotException
Description copied from interface:ICollectionExtractor
Extract the size of the collection.- Specified by:
getSize
in interfaceICollectionExtractor
- Overrides:
getSize
in classFieldSizeArrayCollectionExtractor
- Parameters:
coll
- - the collection to find the size of- Returns:
- the size, or null if not available
- Throws:
SnapshotException
- if there is a problem retrieving data from the snapshot- See Also:
ICollectionExtractor.hasSize()
-
extractEntryIds
public int[] extractEntryIds(IObject idMap) throws SnapshotException
Description copied from interface:ICollectionExtractor
Returns the object ids (int) for all objects which are contained in the collection- Specified by:
extractEntryIds
in interfaceICollectionExtractor
- Overrides:
extractEntryIds
in classFieldArrayCollectionExtractor
- Parameters:
idMap
- - the collection to find the objects it holds- Returns:
- an array of ints which are the object ids.
- Throws:
SnapshotException
- if there is a problem retrieving data from the snapshot- See Also:
ICollectionExtractor.hasExtractableContents()
-
hasCollisionRatio
public boolean hasCollisionRatio()
Can't calculate the collision ratio as we don't have the identityHashCode for the keys, even if we did know the hash algorithm.- Specified by:
hasCollisionRatio
in interfaceIMapExtractor
- Returns:
- true if @
IMapExtractor.getCollisionRatio(IObject)
could be called - See Also:
IMapExtractor.getCollisionRatio(IObject)
-
getCollisionRatio
public Double getCollisionRatio(IObject coll) throws SnapshotException
Complete guess as to collision ratio. Look for consecutive entries - perhaps they were caused by a linear probe.- Specified by:
getCollisionRatio
in interfaceIMapExtractor
- Parameters:
coll
- - the collection to calculate the collision ratio of- Returns:
- Double number of elements with colliding keys / size
- Throws:
SnapshotException
- See Also:
IMapExtractor.hasCollisionRatio()
-
getFillRatio
public Double getFillRatio(IObject coll) throws SnapshotException
Description copied from interface:ICollectionExtractor
Calculate the fill ratio of a collection- Specified by:
getFillRatio
in interfaceICollectionExtractor
- Overrides:
getFillRatio
in classFieldArrayCollectionExtractor
- Parameters:
coll
- - the collection to find the fill ratio of- Returns:
- the fill ratio, between 0.0 and 1.0, or null if unavailable
- Throws:
SnapshotException
- if there is a problem retrieving data from the snapshot- See Also:
ICollectionExtractor.hasFillRatio()
-
getNumberOfNotNullElements
public Integer getNumberOfNotNullElements(IObject coll) throws SnapshotException
Description copied from interface:ICollectionExtractor
Returns the number of non-null elements in the collection. Requires hasExtractableContents or hasExtractableArray- Specified by:
getNumberOfNotNullElements
in interfaceICollectionExtractor
- Overrides:
getNumberOfNotNullElements
in classFieldArrayCollectionExtractor
- Parameters:
coll
- - the collection to find the number of non-null content objects- Returns:
- the number of non-null elements, or null if not available
- Throws:
SnapshotException
- See Also:
ICollectionExtractor.hasExtractableContents()
,ICollectionExtractor.hasExtractableArray()
-
extractMapEntries
public Iterator<Map.Entry<IObject,IObject>> extractMapEntries(IObject coll) throws SnapshotException
Description copied from interface:IMapExtractor
Extracts the contents of a map (i.e. an IObject representing a Map) and provides an Iterator over them- Specified by:
extractMapEntries
in interfaceIMapExtractor
- Parameters:
coll
- - the map to extract contents from- Returns:
- an Iterator over the entries. If the original Map had an Entry object, the content of the iterator would usually be EntryObject
- Throws:
SnapshotException
-
-