summaryrefslogtreecommitdiff
path: root/tools/ahat/src/ObjectsHandler.java
diff options
context:
space:
mode:
author Richard Uhler <ruhler@google.com> 2016-12-12 13:11:26 +0000
committer Richard Uhler <ruhler@google.com> 2017-02-20 13:33:40 +0000
commitf629cfdbf6da3409aff177352e9ff41209b4570c (patch)
treee59e58924de62f4ff9906a95691f259e94b7fd09 /tools/ahat/src/ObjectsHandler.java
parentcda4f2e72f569e0a0d6119c1c75284fd44df79ab (diff)
ahat: add support for diffing two heap dumps.
ahat now has the option to specify a --baseline hprof file to use as the basis for comparing two heap dumps. When a baseline hprof file is provided, ahat will highlight how the heap dump has changed relative to the hprof file. Differences that are highlighted include: * overall heap sizes * total bytes and number of allocations by type * new and deleted instances of a given type * retained sizes of objects * instance fields, static fields, and array elements of modified objects Also: * Remove support for showing NativeAllocations, because I haven't ever found it to be useful, it is not obvious what a "native" allocation is, and I don't feel like adding diff support for them. * Remove help page. Because it is outdated, not well maintained, and not very helpful in the first place. Test: m ahat-test Test: Run in diff mode for tests and added new tests for diff. Test: Manually run with and without diff mode on heap dumps from system server. Bug: 33770653 Change-Id: Id9a392ac75588200e716bbc3edbae6e9cd97c26b
Diffstat (limited to 'tools/ahat/src/ObjectsHandler.java')
-rw-r--r--tools/ahat/src/ObjectsHandler.java9
1 files changed, 8 insertions, 1 deletions
diff --git a/tools/ahat/src/ObjectsHandler.java b/tools/ahat/src/ObjectsHandler.java
index 412647462c..3062d23b53 100644
--- a/tools/ahat/src/ObjectsHandler.java
+++ b/tools/ahat/src/ObjectsHandler.java
@@ -19,6 +19,7 @@ package com.android.ahat;
import com.android.ahat.heapdump.AhatInstance;
import com.android.ahat.heapdump.AhatSnapshot;
import com.android.ahat.heapdump.Site;
+import com.android.ahat.heapdump.Sort;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
@@ -52,14 +53,20 @@ class ObjectsHandler implements AhatHandler {
Collections.sort(insts, Sort.defaultInstanceCompare(mSnapshot));
doc.title("Objects");
+
doc.table(
new Column("Size", Column.Align.RIGHT),
+ new Column("Δ", Column.Align.RIGHT, mSnapshot.isDiffed()),
new Column("Heap"),
new Column("Object"));
+
SubsetSelector<AhatInstance> selector = new SubsetSelector(query, OBJECTS_ID, insts);
for (AhatInstance inst : selector.selected()) {
+ AhatInstance base = inst.getBaseline();
doc.row(
- DocString.format("%,d", inst.getSize()),
+ DocString.format("%,14d", inst.getSize()),
+ DocString.delta(inst.isPlaceHolder(), base.isPlaceHolder(),
+ inst.getSize(), base.getSize()),
DocString.text(inst.getHeap().getName()),
Summarizer.summarize(inst));
}