Home | History | Annotate | only in /art/tools/ahat
Up to higher level directory
NameDateSize
ahat06-Dec-2017707
Android.mk06-Dec-20174.8K
README.txt06-Dec-20174.6K
src/06-Dec-2017
test/06-Dec-2017
test-dump/06-Dec-2017

README.txt

      1 AHAT - Android Heap Analysis Tool
      2 
      3 Usage:
      4   java -jar ahat.jar [OPTIONS] FILE
      5     Launch an http server for viewing the given Android heap dump FILE.
      6 
      7   OPTIONS:
      8     -p <port>
      9        Serve pages on the given port. Defaults to 7100.
     10     --proguard-map FILE
     11        Use the proguard map FILE to deobfuscate the heap dump.
     12     --baseline FILE
     13        Diff the heap dump against the given baseline heap dump FILE.
     14     --baseline-proguard-map FILE
     15        Use the proguard map FILE to deobfuscate the baseline heap dump.
     16 
     17 TODO:
     18  * Add a user guide.
     19  * Dim 'image' and 'zygote' heap sizes slightly? Why do we even show these?
     20  * Let user re-sort sites objects info by clicking column headers.
     21  * Let user re-sort "Objects" list.
     22  * Show site context and heap and class filter in "Objects" view?
     23  * Have a menu at the top of an object view with links to the sections?
     24  * Include ahat version and hprof file in the menu at the top of the page?
     25  * Heaped Table
     26    - Make sortable by clicking on headers.
     27  * For HeapTable with single heap shown, the heap name isn't centered?
     28  * Consistently document functions.
     29  * Show version number with --version.
     30  * Show somewhere where to send bugs.
     31  * Include a link to /objects in the overview and menu?
     32  * Turn on LOCAL_JAVACFLAGS := -Xlint:unchecked -Werror
     33  * Use hex for object ids in URLs?
     34 
     35  * [low priority] by site allocations won't line up if the stack has been
     36    truncated. Is there any way to manually line them up in that case?
     37 
     38  * [low priority] Have a switch to choose whether unreachable objects are
     39    ignored or not?  Is there any interest in what's unreachable, or is it only
     40    reachable objects that people care about?
     41 
     42 Things to Test:
     43  * That we can open a hprof without an 'app' heap and show a tabulation of
     44    objects normally sorted by 'app' heap by default.
     45  * Visit /objects without parameters and verify it doesn't throw an exception.
     46  * Visit /objects with an invalid site, verify it doesn't throw an exception.
     47  * That we can view the list of all objects in a reasonably short amount of
     48    time.
     49  * That we don't show the 'extra' column in the DominatedList if we are
     50    showing all the instances.
     51  * That Instance.asString properly takes into account "offset" and
     52    "count" fields, if they are present.
     53  * Instance.getDexCacheLocation
     54 
     55 Reported Issues:
     56  * Request to be able to sort tables by size.
     57 
     58 Perflib Requests:
     59  * Class objects should have java.lang.Class as their class object, not null.
     60  * ArrayInstance should have asString() to get the string, without requiring a
     61    length function.
     62  * Document that getHeapIndex returns -1 for no such heap.
     63  * Look up totalRetainedSize for a heap by Heap object, not by a separate heap
     64    index.
     65  * What's the difference between getId and getUniqueId?
     66  * I see objects with duplicate references.
     67  * A way to get overall retained size by heap.
     68  * A method Instance.isReachable()
     69 
     70 Things to move to perflib:
     71  * Extracting the string from a String Instance.
     72  * Extracting bitmap data from bitmap instances.
     73  * Adding up allocations by stack frame.
     74  * Computing, for each instance, the other instances it dominates.
     75  * Instance.isRoot and Instance.getRootTypes.
     76 
     77 Release History:
     78  1.3 Pending
     79 
     80  1.2 May 26, 2017
     81    Show registered native sizes of objects.
     82    Simplify presentation of sample path from gc root.
     83 
     84  1.1 Feb 21, 2017
     85    Show java.lang.ref.Reference referents as "unreachable" instead of null.
     86 
     87  1.0 Dec 20, 2016
     88    Add support for diffing two heap dumps.
     89    Remove native allocations view.
     90    Remove outdated help page.
     91    Significant refactoring of ahat internals.
     92 
     93  0.8 Oct 18, 2016
     94    Show sample path from GC root with field names in place of dominator path.
     95 
     96  0.7 Aug 16, 2016
     97    Launch ahat server before processing the heap dump.
     98    Target Java 1.7.
     99 
    100  0.6 Jun 21, 2016
    101    Add support for proguard deobfuscation.
    102 
    103  0.5 Apr 19, 2016
    104    Update perflib to perflib-25.0.0 to improve processing performance.
    105 
    106  0.4 Feb 23, 2016
    107    Annotate char[] objects with their string values.
    108    Show registered native allocations for heap dumps that support it.
    109 
    110  0.3 Dec 15, 2015
    111    Fix page loading performance by showing a limited number of entries by default.
    112    Fix mismatch between overview and "roots" totals.
    113    Annotate root objects and show their types.
    114    Annotate references with their referents.
    115 
    116  0.2 Oct 20, 2015
    117    Take into account 'count' and 'offset' when displaying strings.
    118 
    119  0.1ss Aug 04, 2015
    120    Enable stack allocations code (using custom modified perflib).
    121    Sort objects in 'objects/' with default sort.
    122 
    123  0.1-stacks Aug 03, 2015
    124    Enable stack allocations code (using custom modified perflib).
    125 
    126  0.1 July 30, 2015
    127    Initial Release
    128 
    129