Package org.eclipse.mat.parser.model
Class ClassImpl
- java.lang.Object
-
- org.eclipse.mat.parser.model.AbstractObjectImpl
-
- org.eclipse.mat.parser.model.ClassImpl
-
public class ClassImpl extends AbstractObjectImpl implements IClass, java.lang.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 java.lang.StringJAVA_LANG_CLASSShortcut for java.lang.Class-
Fields inherited from interface org.eclipse.mat.snapshot.model.IClass
JAVA_LANG_CLASSLOADER
-
-
Constructor Summary
Constructors Constructor Description ClassImpl(long address, java.lang.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 voidaddInstance(long usedHeapSize)Note another instance to this class.voidaddSubClass(ClassImpl clazz)Add a subclass of this class.intcompareTo(ClassImpl other)booleandoesExtend(java.lang.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.java.util.List<IClass>getAllSubclasses()Returns all sub-classes including sub-classes of its sub-classes.java.io.SerializablegetCacheEntry()Gets the key for extra information about this class.longgetClassLoaderAddress()Returns the address of the class loader which loaded this class.intgetClassLoaderId()Returns the id of the class loader which loaded this class.java.util.List<FieldDescriptor>getFieldDescriptors()Returns field descriptors for all member variables of instances of this class.longgetHeapSizePerInstance()Returns the heap size of one instance of this class.java.lang.StringgetName()Returns the fully qualified class name of this class.intgetNumberOfObjects()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)java.util.List<NamedReference>getOutboundReferences()Get list of snapshot objects referenced from this snapshot object with the name of the field over which it was referenced.ArrayLonggetReferences()Gets the outbound references from this object, as addresses.longgetRetainedHeapSizeOfObjects(boolean calculateIfNotAvailable, boolean approximation, IProgressListener listener)Returns the retained size of all objects of this instance including the class instance.java.util.List<Field>getStaticFields()Returns the static fields and it values.java.util.List<IClass>getSubclasses()Returns the direct sub-classes.ClassImplgetSuperClass()Returns the super class.longgetSuperClassAddress()Gets the address of the superclass.intgetSuperClassId()Returns the id of the super class.java.lang.StringgetTechnicalName()Get technical name of this object which is something like class@address.longgetTotalSize()The size of all the instances of this class.longgetUsedHeapSize()Get used heap size of just this object.booleanhasSuperClass()Does the class have a super class?booleanisArrayType()Test if this class an array type.voidremoveInstance(long heapSizePerInstance)Remove an instance of this class.voidremoveSubClass(ClassImpl clazz)Remove a subclass of this class.voidsetCacheEntry(java.io.Serializable cacheEntry)Sets the key for extra information about this class.voidsetClassLoaderAddress(long address)Sets the class loader for this class.voidsetClassLoaderIndex(int classLoaderIndex)Sets the class loader index.voidsetHeapSizePerInstance(long size)Sets the size per instance for the classvoidsetName(java.lang.String name)Sets the class name.voidsetSnapshot(ISnapshot dump)Set the snapshot for an object.voidsetSuperClassIndex(int superClassIndex)Sets the superclass index.voidsetUsedHeapSize(long usedHeapSize)Sets the used heap size for this particular class.-
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 java.lang.String JAVA_LANG_CLASS
Shortcut for java.lang.Class- See Also:
- Constant Field Values
-
-
Constructor Detail
-
ClassImpl
public ClassImpl(long address, java.lang.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 java.io.Serializable getCacheEntry()
Gets the key for extra information about this class.- Returns:
- the key
-
setCacheEntry
public void setCacheEntry(java.io.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 java.lang.UnsupportedOperationException, SnapshotExceptionDescription copied from interface:IClassIds of all instances of this class (an empty array if there are no instances of the class)- Specified by:
getObjectIdsin interfaceIClass- Returns:
- an array of all the object IDs of instances of this class
- Throws:
SnapshotException- if there is a problem retrieving the datajava.lang.UnsupportedOperationException
-
getRetainedHeapSizeOfObjects
public long getRetainedHeapSizeOfObjects(boolean calculateIfNotAvailable, boolean approximation, IProgressListener listener) throws SnapshotExceptionDescription copied from interface:IClassReturns the retained size of all objects of this instance including the class instance.- Specified by:
getRetainedHeapSizeOfObjectsin interfaceIClass- Parameters:
calculateIfNotAvailable- whether to calculateapproximation- whether an approximate calculation is sufficientlistener- for reporting progress or for the user to cancel the calculation- Returns:
- the total retained size in bytes, negative if an approximation
- Throws:
SnapshotException- if there is a problem
-
getUsedHeapSize
public long getUsedHeapSize()
Description copied from interface:IObjectGet used heap size of just this object.- Specified by:
getUsedHeapSizein interfaceIObject- Specified by:
getUsedHeapSizein classAbstractObjectImpl- Returns:
- used heap size of this object
-
getReferences
public ArrayLong getReferences()
Description copied from class:AbstractObjectImplGets the outbound references from this object, as addresses.- Specified by:
getReferencesin classAbstractObjectImpl- Returns:
- a list of outbound references
-
getOutboundReferences
public java.util.List<NamedReference> getOutboundReferences()
Description copied from interface:IObjectGet list of snapshot objects referenced from this snapshot object with the name of the field over which it was referenced.- Specified by:
getOutboundReferencesin 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:IClassReturns the address of the class loader which loaded this class.- Specified by:
getClassLoaderAddressin interfaceIClass- Returns:
- the address of the class loader
-
setClassLoaderAddress
public void setClassLoaderAddress(long address)
Sets the class loader for this class.- Parameters:
address- the address of the loader
-
getFieldDescriptors
public java.util.List<FieldDescriptor> getFieldDescriptors()
Description copied from interface:IClassReturns 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:
getFieldDescriptorsin interfaceIClass- Returns:
- the field descriptors for this class
-
getNumberOfObjects
public int getNumberOfObjects()
Description copied from interface:IClassReturns the number of instances of this class present in the heap dump.- Specified by:
getNumberOfObjectsin interfaceIClass- Returns:
- the number of instances
-
getHeapSizePerInstance
public long getHeapSizePerInstance()
Description copied from interface:IClassReturns the heap size of one instance of this class. Not valid if this class represents an array.- Specified by:
getHeapSizePerInstancein interfaceIClass- Returns:
- the size of an instance of this class in bytes
- Since:
- 1.0
-
setHeapSizePerInstance
public void setHeapSizePerInstance(long size)
Sets the size per instance for the class- Parameters:
size- the size in bytes- Since:
- 1.0
-
getName
public java.lang.String getName()
Description copied from interface:IClassReturns 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(java.lang.String name)
Sets the class name.- Parameters:
name- the class name
-
getStaticFields
public java.util.List<Field> getStaticFields()
Description copied from interface:IClassReturns 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:
getStaticFieldsin interfaceIClass- Returns:
- the static fields of this class
-
getSuperClassAddress
public long getSuperClassAddress()
Gets the address of the superclass.- Returns:
- the superclass address
-
getSuperClassId
public int getSuperClassId()
Description copied from interface:IClassReturns the id of the super class. -1 if it has no super class, i.e. if it is java.lang.Object.- Specified by:
getSuperClassIdin interfaceIClass- Returns:
- the super class ID
-
getSuperClass
public ClassImpl getSuperClass()
Description copied from interface:IClassReturns the super class.- Specified by:
getSuperClassin interfaceIClass- Returns:
- the super class
-
getTotalSize
public long getTotalSize()
The size of all the instances of this class.- Returns:
- the size in bytes
-
hasSuperClass
public boolean hasSuperClass()
Description copied from interface:IClassDoes the class have a super class?- Specified by:
hasSuperClassin interfaceIClass- Returns:
- true if the class has a super class.
-
compareTo
public int compareTo(ClassImpl other)
- Specified by:
compareToin interfacejava.lang.Comparable<ClassImpl>
-
addInstance
public void addInstance(long usedHeapSize)
Note another instance to this class.- Parameters:
usedHeapSize- the size in bytes of this instance- Since:
- 1.0
-
removeInstance
public void removeInstance(long heapSizePerInstance)
Remove an instance of this class. Reverses the effect ofaddInstance(long)- Parameters:
heapSizePerInstance- the size in bytes of this instance- Since:
- 1.0
-
getSubclasses
public java.util.List<IClass> getSubclasses()
Description copied from interface:IClassReturns the direct sub-classes.- Specified by:
getSubclassesin interfaceIClass- Returns:
- a list of the immediate subclasses
-
getAllSubclasses
public java.util.List<IClass> getAllSubclasses()
Description copied from interface:IClassReturns all sub-classes including sub-classes of its sub-classes.- Specified by:
getAllSubclassesin interfaceIClass- Returns:
- a list of all the subclasses
-
isArrayType
public boolean isArrayType()
Description copied from interface:IClassTest if this class an array type.- Specified by:
isArrayTypein interfaceIClass- Returns:
- true if the class is an array class.
-
getTechnicalName
public java.lang.String getTechnicalName()
Description copied from interface:IObjectGet technical name of this object which is something like class@address.- Specified by:
getTechnicalNamein interfaceIObject- Overrides:
getTechnicalNamein classAbstractObjectImpl- Returns:
- technical name of this object which is something like class@address
-
getClassLoaderId
public int getClassLoaderId()
Description copied from interface:IClassReturns the id of the class loader which loaded this class.- Specified by:
getClassLoaderIdin interfaceIClass- Returns:
- the object ID of the class loader
-
addSubClass
public void addSubClass(ClassImpl clazz)
Add a subclass of this class.- Parameters:
clazz- the subclass
-
removeSubClass
public void removeSubClass(ClassImpl clazz)
Remove a subclass of this class. Reverses the effect ofaddSubClass(ClassImpl)- Parameters:
clazz- the subclass
-
setUsedHeapSize
public void setUsedHeapSize(long usedHeapSize)
Sets the used heap size for this particular class. Does not include instances.- Parameters:
usedHeapSize- the size in bytes- Since:
- 1.0
-
doesExtend
public boolean doesExtend(java.lang.String className) throws SnapshotExceptionDescription copied from interface:IClassDoes 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:
doesExtendin interfaceIClass- Parameters:
className- the candidate class name- Returns:
- true if it does extend
- Throws:
SnapshotException- if there is a problem retrieving the information
-
setSnapshot
public void setSnapshot(ISnapshot dump)
Description copied from class:AbstractObjectImplSet the snapshot for an object. Used once the entire snapshot has been built, or an object has been deserialized.- Overrides:
setSnapshotin classAbstractObjectImpl- Parameters:
dump- the actual current snapshot
-
-