Package org.eclipse.mat.parser.model
Class ClassImpl
- java.lang.Object
-
- org.eclipse.mat.parser.model.AbstractObjectImpl
-
- org.eclipse.mat.parser.model.ClassImpl
-
- All Implemented Interfaces:
Serializable
,Comparable<ClassImpl>
,IClass
,IObject
public class ClassImpl extends AbstractObjectImpl implements IClass, Comparable<ClassImpl>
Implementation of a Java object representing a java.lang.Class object. As well as some standard object information it contains information about the class and summary details about instances of this class.- See Also:
- Serialized Form
- No Extend:
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface org.eclipse.mat.snapshot.model.IObject
IObject.Type
-
-
Field Summary
Fields Modifier and Type Field Description static String
JAVA_LANG_CLASS
-
Fields inherited from interface org.eclipse.mat.snapshot.model.IClass
JAVA_LANG_CLASSLOADER
-
-
Constructor Summary
Constructors Constructor Description ClassImpl(long address, String name, long superAddress, long loaderAddress, Field[] staticFields, FieldDescriptor[] fields)
Construct a class object based on name, address and fields.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addInstance(long usedHeapSize)
void
addSubClass(ClassImpl clazz)
int
compareTo(ClassImpl other)
boolean
doesExtend(String className)
Does this class extend a class of the supplied name? With multiple class loaders the supplied name might not be the class you were intending to find.List<IClass>
getAllSubclasses()
Returns all sub-classes including sub-classes of its sub-classes.Serializable
getCacheEntry()
Gets the key for extra information about this class.long
getClassLoaderAddress()
Returns the address of the class loader which loaded this class.int
getClassLoaderId()
Returns the id of the class loader which loaded this class.List<FieldDescriptor>
getFieldDescriptors()
Returns field descriptors for all member variables of instances of this class.long
getHeapSizePerInstance()
Returns the heap size of one instance of this class.String
getName()
Returns the fully qualified class name of this class.int
getNumberOfObjects()
Returns the number of instances of this class present in the heap dump.int[]
getObjectIds()
Ids of all instances of this class (an empty array if there are no instances of the class)List<NamedReference>
getOutboundReferences()
Get list of snapshot objects referenced from this snapshot object with the name of the field over which it was referenced.ArrayLong
getReferences()
Gets the outbound references from this object, as addresses.long
getRetainedHeapSizeOfObjects(boolean calculateIfNotAvailable, boolean approximation, IProgressListener listener)
Returns the retained size of all objects of this instance including the class instance.List<Field>
getStaticFields()
Returns the static fields and it values.List<IClass>
getSubclasses()
Returns the direct sub-classes.ClassImpl
getSuperClass()
Returns the super class.long
getSuperClassAddress()
int
getSuperClassId()
Returns the id of the super class.String
getTechnicalName()
Get technical name of this object which is something like class@address.long
getTotalSize()
long
getUsedHeapSize()
Get used heap size of just this object.boolean
hasSuperClass()
Returns true if the class has a super class.boolean
isArrayType()
Returns true if the class is an array class.void
removeInstance(long heapSizePerInstance)
void
removeSubClass(ClassImpl clazz)
void
setCacheEntry(Serializable cacheEntry)
Sets the key for extra information about this class.void
setClassLoaderAddress(long address)
void
setClassLoaderIndex(int classLoaderIndex)
Sets the class loader index.void
setHeapSizePerInstance(long size)
void
setName(String name)
void
setSnapshot(ISnapshot dump)
Set the snapshot for an object.void
setSuperClassIndex(int superClassIndex)
Sets the superclass index.void
setUsedHeapSize(long usedHeapSize)
-
Methods inherited from class org.eclipse.mat.parser.model.AbstractObjectImpl
equals, getClassAddress, getClassId, getClassSpecificName, getClazz, getComparatorForClassSpecificName, getComparatorForTechnicalName, getComparatorForUsedHeapSize, getDisplayName, getGCRootInfo, getObjectAddress, getObjectId, getRetainedHeapSize, getSnapshot, hashCode, resolveValue, setClassInstance, setObjectAddress, setObjectId, toString
-
Methods inherited from interface org.eclipse.mat.snapshot.model.IObject
getClassSpecificName, getClazz, getDisplayName, getGCRootInfo, getObjectAddress, getObjectId, getRetainedHeapSize, getSnapshot, resolveValue
-
-
-
-
Field Detail
-
JAVA_LANG_CLASS
public static final String JAVA_LANG_CLASS
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
ClassImpl
public ClassImpl(long address, String name, long superAddress, long loaderAddress, Field[] staticFields, FieldDescriptor[] fields)
Construct a class object based on name, address and fields.- Parameters:
address
- the address of the class objectname
- the class name, using '.' as package separatorsuperAddress
- the address of the superclass, or 0 if none.loaderAddress
- the address of the class loaderstaticFields
- all the static fields, with valuesfields
- all the instance fields as descriptors
-
-
Method Detail
-
getCacheEntry
public Serializable getCacheEntry()
Gets the key for extra information about this class.- Returns:
- the key
-
setCacheEntry
public void setCacheEntry(Serializable cacheEntry)
Sets the key for extra information about this class.- Parameters:
cacheEntry
- the key
-
setSuperClassIndex
public void setSuperClassIndex(int superClassIndex)
Sets the superclass index. May need to be changed after reindexing of a snapshot.- Parameters:
superClassIndex
- the new index
-
setClassLoaderIndex
public void setClassLoaderIndex(int classLoaderIndex)
Sets the class loader index. May need to be changed after reindexing of a snapshot.- Parameters:
classLoaderIndex
- the new index
-
getObjectIds
public int[] getObjectIds() throws UnsupportedOperationException, SnapshotException
Description copied from interface:IClass
Ids of all instances of this class (an empty array if there are no instances of the class)- Specified by:
getObjectIds
in interfaceIClass
- Throws:
UnsupportedOperationException
SnapshotException
-
getRetainedHeapSizeOfObjects
public long getRetainedHeapSizeOfObjects(boolean calculateIfNotAvailable, boolean approximation, IProgressListener listener) throws SnapshotException
Description copied from interface:IClass
Returns the retained size of all objects of this instance including the class instance.- Specified by:
getRetainedHeapSizeOfObjects
in interfaceIClass
- Throws:
SnapshotException
-
getUsedHeapSize
public long getUsedHeapSize()
Description copied from interface:IObject
Get used heap size of just this object.- Specified by:
getUsedHeapSize
in interfaceIObject
- Specified by:
getUsedHeapSize
in classAbstractObjectImpl
- Returns:
- used heap size of this object
-
getReferences
public ArrayLong getReferences()
Description copied from class:AbstractObjectImpl
Gets the outbound references from this object, as addresses.- Specified by:
getReferences
in classAbstractObjectImpl
- Returns:
- a list of outbound references
-
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 interfaceIObject
- Returns:
- list of snapshot objects referenced from this snapshot object with the name of the field over which it was referenced
-
getClassLoaderAddress
public long getClassLoaderAddress()
Description copied from interface:IClass
Returns the address of the class loader which loaded this class.- Specified by:
getClassLoaderAddress
in interfaceIClass
-
setClassLoaderAddress
public void setClassLoaderAddress(long address)
-
getFieldDescriptors
public List<FieldDescriptor> getFieldDescriptors()
Description copied from interface:IClass
Returns field descriptors for all member variables of instances of this class. If the snapshot data format does not contain field data then this will be an empty list.- Specified by:
getFieldDescriptors
in interfaceIClass
-
getNumberOfObjects
public int getNumberOfObjects()
Description copied from interface:IClass
Returns the number of instances of this class present in the heap dump.- Specified by:
getNumberOfObjects
in interfaceIClass
-
getHeapSizePerInstance
public long getHeapSizePerInstance()
Description copied from interface:IClass
Returns the heap size of one instance of this class. Not valid if this class represents an array.- Specified by:
getHeapSizePerInstance
in interfaceIClass
- Since:
- 1.0
-
setHeapSizePerInstance
public void setHeapSizePerInstance(long size)
- Since:
- 1.0
-
getName
public String getName()
Description copied from interface:IClass
Returns the fully qualified class name of this class. The package components are separated by dots '.'. Inner classes use $ to separate the parts.
-
setName
public void setName(String name)
-
getStaticFields
public List<Field> getStaticFields()
Description copied from interface:IClass
Returns the static fields and it values. If the snapshot data format does not contain field data then this will be an empty list.- Specified by:
getStaticFields
in interfaceIClass
-
getSuperClassAddress
public long getSuperClassAddress()
-
getSuperClassId
public int getSuperClassId()
Description copied from interface:IClass
Returns the id of the super class. -1 if it has no super class, i.e. if it is java.lang.Object.- Specified by:
getSuperClassId
in interfaceIClass
-
getSuperClass
public ClassImpl getSuperClass()
Description copied from interface:IClass
Returns the super class.- Specified by:
getSuperClass
in interfaceIClass
-
getTotalSize
public long getTotalSize()
-
hasSuperClass
public boolean hasSuperClass()
Description copied from interface:IClass
Returns true if the class has a super class.- Specified by:
hasSuperClass
in interfaceIClass
-
compareTo
public int compareTo(ClassImpl other)
- Specified by:
compareTo
in interfaceComparable<ClassImpl>
-
addInstance
public void addInstance(long usedHeapSize)
- Since:
- 1.0
-
removeInstance
public void removeInstance(long heapSizePerInstance)
- Since:
- 1.0
-
getSubclasses
public List<IClass> getSubclasses()
Description copied from interface:IClass
Returns the direct sub-classes.- Specified by:
getSubclasses
in interfaceIClass
-
getAllSubclasses
public List<IClass> getAllSubclasses()
Description copied from interface:IClass
Returns all sub-classes including sub-classes of its sub-classes.- Specified by:
getAllSubclasses
in interfaceIClass
-
isArrayType
public boolean isArrayType()
Description copied from interface:IClass
Returns true if the class is an array class.- Specified by:
isArrayType
in interfaceIClass
-
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 interfaceIObject
- Overrides:
getTechnicalName
in classAbstractObjectImpl
- Returns:
- technical name of this object which is something like class@address
-
getClassLoaderId
public int getClassLoaderId()
Description copied from interface:IClass
Returns the id of the class loader which loaded this class.- Specified by:
getClassLoaderId
in interfaceIClass
-
addSubClass
public void addSubClass(ClassImpl clazz)
-
removeSubClass
public void removeSubClass(ClassImpl clazz)
-
setUsedHeapSize
public void setUsedHeapSize(long usedHeapSize)
- Since:
- 1.0
-
doesExtend
public boolean doesExtend(String className) throws SnapshotException
Description copied from interface:IClass
Does this class extend a class of the supplied name? With multiple class loaders the supplied name might not be the class you were intending to find.- Specified by:
doesExtend
in interfaceIClass
- Returns:
- true if it does extend
- Throws:
SnapshotException
-
setSnapshot
public void setSnapshot(ISnapshot dump)
Description copied from class:AbstractObjectImpl
Set the snapshot for an object. Used once the entire snapshot has been built, or an object has been deserialized.- Overrides:
setSnapshot
in classAbstractObjectImpl
- Parameters:
dump
- the actual current snapshot
-
-