1page.title=Memory Profilers
2meta.tags="android, performance, profiling, tools, memory, memoryleaks, garbagecollection"
3page.tags="android", "performance", "profiling", "tools", "memory", "memoryleaks", "garbagecollection"
4page.metaDescription=Heap Viewer, Memory Monitor, and Allocation Tracker are complementary tools that visualize the memory your app uses.
5page.image=tools/performance/thumbnails/tools_memory_monitor.png
6page.article=true
7
8@jd:body
9
10<div id="tb" style="margin-left: 7px; margin-bottom: 5px;">
11
12<h2>In this document</h2>
13<ul>
14  <li><a href="#MemoryMonitor">Memory Monitor</a></li>
15  <li><a href="#HeapViewer">Heap Viewer</a></li>
16  <li><a href="#AllocationTracker">Allocation Tracker</a></li>
17
18</ul>
19
20<h2>You should also read</h2>
21<ul>
22  <li><a href="{@docRoot}tools/performance/memory-monitor/index.html">
23    Memory Monitor Walkthrough</a></li>
24  <li><a href="{@docRoot}tools/performance/heap-viewer/index.html">
25    Heap Viewer Walkthrough</a></li>
26  <li><a href="{@docRoot}tools/performance/allocation-tracker/index.html">
27    Allocation Tracker Walkthrough</a></li>
28</ul>
29
30</div>
31
32  <p>Heap Viewer, Memory Monitor, and Allocation Tracker are complementary tools that visualize the
33  memory your app uses.</p>
34
35  <ol>
36    <li>Use the
37    <a href="{@docRoot}tools/performance/memory-monitor/index.html">
38    Memory Monitor Tool</a> to find out whether undesirable garbage collection (GC) event patterns might
39    be causing your performance problems.</li>
40
41    <li>Run
42    <a href="{@docRoot}tools/performance/heap-viewer/index.html">
43    Heap Viewer</a> to identify object types that get or stay allocated
44    unexpectedely or unecessarily.</li>
45
46    <li>Use
47    <a href="{@docRoot}tools/performance/allocation-tracker/index.html">
48    Allocation Tracker</a> to identify where in your code the problem might be.</li>
49  </ol>
50
51  <h2 id="MemoryMonitor">Memory Monitor</h2>
52
53<div>
54  <div class="figure" style="">
55    <img src="{@docRoot}images/tools/performance/compare_MemoryMonitor.png"
56         alt=""
57         height="" />
58    <p class="img-caption">
59      <strong>Figure 1. </strong>Memory Monitor.
60    </p>
61  </div>
62
63  <ul>
64    <li>Shows available and used memory as they both change over time <i>for your app</i> in a
65    graph, with dips indicating Garbage Collection (GC) events.</li>
66
67    <li>Provides a quick way to test whether app slowness might be related
68    to excessive GC events.</li>
69
70    <li>Provides a quick way to see whether app crashes might be related
71    to running out of memory.</li>
72
73    <li>Runs live on your application and updates about once a second.</li>
74
75    <li>Helps quickly identify the potential of memory leaks.</li>
76
77    <li>Helps identify GC patterns for your application and determine whether
78      they are healthy and what you expect.</li>
79
80    <li>Is easy to use, and it is easy to interpret what you see.</li>
81
82    <li>However, Memory Monitor does not tell you which objects are the cause
83      of your problems, or where in your code it might be.</li>
84  </ul>
85
86    <h2 id="HeapViewer">Heap Viewer</h2>
87
88  <div class="figure" style="">
89    <img src="{@docRoot}images/tools/studio-hprof-viewer.png"
90         alt=""
91         height="" />
92    <p class="img-caption">
93      <strong>Figure 2. </strong>Heap Viewer.
94    </p>
95  </div>
96
97
98  <ul>
99    <li>Shows snapshots of a number of objects allocated by type.</li>
100
101    <li>Samples data every time a garbage collection event occurs
102      naturally or triggered by you.</li>
103
104    <li>Helps identify which object types might be involved in memory leaks.</li>
105
106    <li>However, you have to look for changes over time yourself by tracking what's
107    happening in the graph.</li>
108    <br><br><br><br>
109  </ul>
110
111    <h2 id="AllocationTracker">Allocation Tracker</h2>
112
113  <div class="figure" style="">
114    <img src="{@docRoot}images/tools/studio-allocation-tracker.png"
115         alt=""ge
116         height="" />
117    <p class="img-caption">
118      <strong>Figure 3. </strong>Allocation Tracker.
119    </p>
120  </div>
121
122  <ul>
123    <li>Shows when and where your code allocates object types, their size, allocating thread, and
124    stack traces.</li>
125
126    <li>Helps recognize memory churn through recurring allocation/deallocation patterns.</li>
127
128    <li>Can be used in combination with Heap Viewer to track down memory leaks. For example, if you
129    see a bitmap object resident on the heap, you can find its allocation location with Allocation
130    Tracker.</li>
131
132    <li>However, it takes time and experience to learn to interpret the output from this tool.</li>
133
134  </ul>
135