Package org.eclipse.mat.snapshot
Class Histogram
- java.lang.Object
-
- org.eclipse.mat.snapshot.HistogramRecord
-
- org.eclipse.mat.snapshot.Histogram
-
- All Implemented Interfaces:
java.io.Serializable
,IIconProvider
,IResult
,IResultTable
,IStructuredResult
public class Histogram extends HistogramRecord implements IResultTable, IIconProvider
Class histogram - heap objects aggregated by their class. It holds the number and consumed memory of the objects aggregated per class and aggregated per class loader.- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
Histogram.ClassLoaderTree
static class
Histogram.PackageTree
static class
Histogram.SuperclassTree
-
Field Summary
-
Fields inherited from class org.eclipse.mat.snapshot.HistogramRecord
COMPARATOR_FOR_LABEL, COMPARATOR_FOR_NUMBEROFOBJECTS, COMPARATOR_FOR_RETAINEDHEAPSIZE, COMPARATOR_FOR_USEDHEAPSIZE
-
Fields inherited from interface org.eclipse.mat.query.IIconProvider
EMPTY
-
-
Constructor Summary
Constructors Constructor Description Histogram(java.lang.String label, java.util.ArrayList<ClassHistogramRecord> classHistogramRecords, java.util.ArrayList<ClassLoaderHistogramRecord> classLoaderHistogramRecords, long numberOfObjects, long usedHeapSize, long retainedHeapSize)
Construct a histogramHistogram(java.lang.String label, java.util.ArrayList<ClassHistogramRecord> classHistogramRecords, java.util.ArrayList<ClassLoaderHistogramRecord> classLoaderHistogramRecords, long numberOfObjects, long usedHeapSize, long retainedHeapSize, boolean isDefaultHistogram)
Construct a histogram
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description Histogram
diffWithBaseline(Histogram baseline)
Compute a new histogram as difference of this histogram compared to (minus) the given baseline histogram.static java.lang.String
generateClassHistogramRecordCsvReport(Histogram histogram, java.util.Comparator<HistogramRecord> comparator)
Generate machine/human readable comma separated report from an histogram.static java.lang.String
generateClassHistogramRecordTextReport(Histogram histogram, java.util.Comparator<HistogramRecord> comparator)
Generate human readable text based report from a histogram.static java.lang.String
generateClassLoaderHistogramRecordCsvReport(Histogram histogram, java.util.Comparator<HistogramRecord> comparator)
Generate machine/human readable comma separated report from an histogram.java.util.Collection<ClassHistogramRecord>
getClassHistogramRecords()
Get collection of all the classes for all the objects which were found in the set of objects on which the class histogram was computed.java.util.Collection<ClassLoaderHistogramRecord>
getClassLoaderHistogramRecords()
Get collection of all the class loaders for all the classes for all the objects which were found in the set of objects on which the class histogram was computed.Column[]
getColumns()
The columns of the tree or table.java.lang.Object
getColumnValue(java.lang.Object row, int columnIndex)
Returns the (unformatted) value of a table/tree cell.IContextObject
getContext(java.lang.Object row)
The default context of the row which is used to display information in the object inspector.java.net.URL
getIcon(java.lang.Object row)
ResultMetaData
getResultMetaData()
(Optionally) Return meta data of the result needed to fine-tune the display of the result.java.lang.Object
getRow(int rowId)
Returns the object of the row with the given row number.int
getRowCount()
Returns the number of rows in the result table.IResultTree
groupByClassLoader()
implementation as result tree grouped by class loaderIResultTree
groupByPackage()
implementation as result tree grouped by packageIResultTree
groupBySuperclass(ISnapshot snapshot)
implementation as result tree grouped by superclassHistogram
intersectWithAnother(Histogram another)
Compute a new histogram as intersection of this histogram compared to (equals) the given another histogram.boolean
isDefaultHistogram()
java.lang.String
toString()
-
Methods inherited from class org.eclipse.mat.snapshot.HistogramRecord
getLabel, getNumberOfObjects, getRetainedHeapSize, getUsedHeapSize, incNumberOfObjects, incNumberOfObjects, incRetainedHeapSize, incUsedHeapSize, reverseComparator, setLabel, setNumberOfObjects, setRetainedHeapSize, setUsedHeapSize
-
-
-
-
Constructor Detail
-
Histogram
public Histogram(java.lang.String label, java.util.ArrayList<ClassHistogramRecord> classHistogramRecords, java.util.ArrayList<ClassLoaderHistogramRecord> classLoaderHistogramRecords, long numberOfObjects, long usedHeapSize, long retainedHeapSize)
Construct a histogram- Parameters:
label
- the name of the whole histogramclassHistogramRecords
- the classesclassLoaderHistogramRecords
- the class loadersnumberOfObjects
- the total number of objectsusedHeapSize
- the shallow size of all the objectsretainedHeapSize
- the retained size of all the objects, or 0 if unknown
-
Histogram
public Histogram(java.lang.String label, java.util.ArrayList<ClassHistogramRecord> classHistogramRecords, java.util.ArrayList<ClassLoaderHistogramRecord> classLoaderHistogramRecords, long numberOfObjects, long usedHeapSize, long retainedHeapSize, boolean isDefaultHistogram)
Construct a histogram- Parameters:
label
- the name of the whole histogramclassHistogramRecords
- the classesclassLoaderHistogramRecords
- the class loadersnumberOfObjects
- the total number of objectsusedHeapSize
- the shallow size of all the objectsretainedHeapSize
- the retained size of all the objects, or 0 if unknownisDefaultHistogram
- a histogram of the whole snapshot
-
-
Method Detail
-
getClassHistogramRecords
public java.util.Collection<ClassHistogramRecord> getClassHistogramRecords()
Get collection of all the classes for all the objects which were found in the set of objects on which the class histogram was computed.- Returns:
- collection of all the classes for all the objects which were found in the set of objects on which the class histogram was computed
-
getClassLoaderHistogramRecords
public java.util.Collection<ClassLoaderHistogramRecord> getClassLoaderHistogramRecords()
Get collection of all the class loaders for all the classes for all the objects which were found in the set of objects on which the class histogram was computed.- Returns:
- collection of all the class loaders for all the classes for all the objects which were found in the set of objects on which the class histogram was computed
-
diffWithBaseline
public Histogram diffWithBaseline(Histogram baseline)
Compute a new histogram as difference of this histogram compared to (minus) the given baseline histogram.This method can be used to check what has changed from one histogram to another, to compute a delta.
- Parameters:
baseline
- baseline histogram- Returns:
- difference histogram between this histogram compared to (minus) the given baseline histogram
-
intersectWithAnother
public Histogram intersectWithAnother(Histogram another)
Compute a new histogram as intersection of this histogram compared to (equals) the given another histogram.This method can be used to check what remains the same within two histograms, e.g. if you have two histograms it shows what hasn't changed, e.g. if you have two difference histograms it shows what remained the same change (increase or decrease; used in gradient memory leak analysis).
Note: Heap space is not taken into account in this analysis, only the number of objects, i.e. when the number of objects is the same, you will see this number of objects, otherwise or if there are no objects of a particular class you won't get a histogram record for it!
- Parameters:
another
- another histogram- Returns:
- intersection histogram of this histogram compared to (equals) the given another histogram
-
isDefaultHistogram
public boolean isDefaultHistogram()
-
toString
public java.lang.String toString()
- Overrides:
toString
in classjava.lang.Object
-
generateClassHistogramRecordTextReport
public static java.lang.String generateClassHistogramRecordTextReport(Histogram histogram, java.util.Comparator<HistogramRecord> comparator)
Generate human readable text based report from a histogram.- Parameters:
histogram
- histogram you want a human reable text based report forcomparator
- comparator to be used for sorting the histogram records (HistogramRecord
provides some default comparators)- Returns:
- human redable text based report for the given histogram
-
generateClassHistogramRecordCsvReport
public static java.lang.String generateClassHistogramRecordCsvReport(Histogram histogram, java.util.Comparator<HistogramRecord> comparator)
Generate machine/human readable comma separated report from an histogram.- Parameters:
histogram
- histogram you want a machine/human readable comma separated report forcomparator
- comparator to be used for sorting the histogram records (HistogramRecord
provides some default comparators)- Returns:
- machine/human readable comma separated report for the given histogram
-
generateClassLoaderHistogramRecordCsvReport
public static java.lang.String generateClassLoaderHistogramRecordCsvReport(Histogram histogram, java.util.Comparator<HistogramRecord> comparator)
Generate machine/human readable comma separated report from an histogram.- Parameters:
histogram
- histogram you want a machine/human readable comma separated report forcomparator
- comparator to be used for sorting the histogram records (HistogramRecord
provides some default comparators)- Returns:
- machine/human readable comma separated report for the given histogram
-
getResultMetaData
public ResultMetaData getResultMetaData()
Description copied from interface:IResult
(Optionally) Return meta data of the result needed to fine-tune the display of the result. This could include an additional context, an additional query to run on selected data from the result , additional calculated columns, or an indication that the results are already presorted.- Specified by:
getResultMetaData
in interfaceIResult
- Returns:
- the metadata for the result, used to obtain extra data
-
getColumns
public Column[] getColumns()
Description copied from interface:IStructuredResult
The columns of the tree or table.- Specified by:
getColumns
in interfaceIStructuredResult
- Returns:
- an array of all the columns
-
getRowCount
public int getRowCount()
Description copied from interface:IResultTable
Returns the number of rows in the result table.- Specified by:
getRowCount
in interfaceIResultTable
- Returns:
- the number of rows
-
getRow
public java.lang.Object getRow(int rowId)
Description copied from interface:IResultTable
Returns the object of the row with the given row number.- Specified by:
getRow
in interfaceIResultTable
- Parameters:
rowId
- The row number.- Returns:
- an opaque row object representing this row
which can be passed to
IStructuredResult.getContext(Object)
orIStructuredResult.getColumnValue(Object, int)
.
-
getColumnValue
public java.lang.Object getColumnValue(java.lang.Object row, int columnIndex)
Description copied from interface:IStructuredResult
Returns the (unformatted) value of a table/tree cell.- Specified by:
getColumnValue
in interfaceIStructuredResult
- Parameters:
row
- The row object as returned by theIResultTable.getRow(int)
orIResultTree.getElements()
orIResultTree.getChildren(Object)
methodscolumnIndex
- The index of the column.- Returns:
- the cell value
-
getContext
public IContextObject getContext(java.lang.Object row)
Description copied from interface:IStructuredResult
The default context of the row which is used to display information in the object inspector. Unless no context provider is given via theResultMetaData
, it is also used for the context menu on a row.- Specified by:
getContext
in interfaceIStructuredResult
- Parameters:
row
- The row object as returned by theIResultTable.getRow(int)
orIResultTree.getElements()
orIResultTree.getChildren(Object)
methods.- Returns:
- a context object holding details about that row
-
getIcon
public java.net.URL getIcon(java.lang.Object row)
- Specified by:
getIcon
in interfaceIIconProvider
-
groupByClassLoader
public IResultTree groupByClassLoader()
implementation as result tree grouped by class loader
-
groupByPackage
public IResultTree groupByPackage()
implementation as result tree grouped by package
-
groupBySuperclass
public IResultTree groupBySuperclass(ISnapshot snapshot)
implementation as result tree grouped by superclass- Since:
- 1.0
-
-