OSDN Git Service

ahat: add support for diffing two heap dumps.
authorRichard Uhler <ruhler@google.com>
Mon, 12 Dec 2016 13:11:26 +0000 (13:11 +0000)
committerRichard Uhler <ruhler@google.com>
Mon, 20 Feb 2017 13:33:40 +0000 (13:33 +0000)
commitf629cfdbf6da3409aff177352e9ff41209b4570c
treee59e58924de62f4ff9906a95691f259e94b7fd09
parentcda4f2e72f569e0a0d6119c1c75284fd44df79ab
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
39 files changed:
tools/ahat/Android.mk
tools/ahat/README.txt
tools/ahat/src/Column.java
tools/ahat/src/DocString.java
tools/ahat/src/DominatedList.java
tools/ahat/src/HeapTable.java
tools/ahat/src/HelpHandler.java [deleted file]
tools/ahat/src/HtmlDoc.java
tools/ahat/src/Main.java
tools/ahat/src/Menu.java
tools/ahat/src/NativeAllocationsHandler.java [deleted file]
tools/ahat/src/ObjectHandler.java
tools/ahat/src/ObjectsHandler.java
tools/ahat/src/OverviewHandler.java
tools/ahat/src/SiteHandler.java
tools/ahat/src/Summarizer.java
tools/ahat/src/heapdump/AhatClassInstance.java
tools/ahat/src/heapdump/AhatClassObj.java
tools/ahat/src/heapdump/AhatHeap.java
tools/ahat/src/heapdump/AhatInstance.java
tools/ahat/src/heapdump/AhatPlaceHolderClassObj.java [new file with mode: 0644]
tools/ahat/src/heapdump/AhatPlaceHolderInstance.java [new file with mode: 0644]
tools/ahat/src/heapdump/AhatSnapshot.java
tools/ahat/src/heapdump/Diff.java [new file with mode: 0644]
tools/ahat/src/heapdump/Diffable.java [moved from tools/ahat/src/heapdump/NativeAllocation.java with 52% similarity]
tools/ahat/src/heapdump/FieldValue.java
tools/ahat/src/heapdump/PathElement.java
tools/ahat/src/heapdump/Site.java
tools/ahat/src/heapdump/Sort.java [moved from tools/ahat/src/Sort.java with 74% similarity]
tools/ahat/src/heapdump/Value.java
tools/ahat/src/help.html [deleted file]
tools/ahat/src/manifest.txt
tools/ahat/src/style.css
tools/ahat/test-dump/Main.java
tools/ahat/test/DiffTest.java [new file with mode: 0644]
tools/ahat/test/NativeAllocationTest.java [deleted file]
tools/ahat/test/OverviewHandlerTest.java
tools/ahat/test/TestDump.java
tools/ahat/test/Tests.java