1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
|
page.title=Heap Viewer Walkthrough
meta.tags="android, performance, profiling, tools, memory, memoryleaks, memoryheap"
page.tags="android", "performance", "profiling", "tools", "memory", "memoryleaks", "memoryheap"
page.metaDescription=Report in real-time how many objects of what types and sizes your application is allocating and find memory leaks.
page.image=tools/performance/thumbnails/tools_heap_viewer.png
page.article=true
@jd:body
<style>
.no-bullet {
list-style-type: none;
}
.padded {
padding-left: 10px;
}
</style>
<div id="tb" style="margin-left: 7px; margin-bottom: 5px;">
<h2>In this document</h2>
<ul>
<li><a href="#WhatYouNeed">Prerequisites</a></li>
<li><a href="#WorkingWithHeapViewer">Working with Heap Viewer</a></li>
</ul>
<h2>You should also read</h2>
<ul>
<li><a href="{@docRoot}tools/performance/memory-monitor/index.html">
Memory Monitor Walkthrough</a></li>
<li><a href="{@docRoot}tools/performance/allocation-tracker/index.html">
Allocation Tracker Walkthrough</a></li>
<li><a href="{@docRoot}tools/performance/comparison.html">
Comparison: Memory Monitor, Heap Viewer, Allocation Tracker</a>
<li><a href="{@docRoot}tools/performance/traceview/index.html">
Traceview Walkthrough</a></li>
</ul>
</div>
<p>This walkthrough shows the basic usage and workflow for the Heap Viewer tool. Heap Viewer
reports in real-time what <i>types</i> of objects your application has allocated, how many, and
their sizes on the heap.</p>
<p>What it's good for:</p>
<ul>
<li>Getting a sense of how your app allocates and frees memory.</li>
<li>Identifying memory leaks.</li>
</ul>
<h2 id="WhatYouNeed">Prerequisites</h2>
<ul>
<li>A mobile device running Android 5.0 or higher with <a href=
"http://developer.android.com/tools/device.html#developer-device-options">Developer Options</a>
enabled.</li>
<li>Application code. Use your own code, or the <a href=
"https://github.com/udacity/Sunshine-Version-2">Sunshine</a> sample app from the <a href=
"https://www.udacity.com/course/ud853">Android Fundamentals Udacity course</a>.</li>
</ul>
<h2 id="WorkingWithHeapViewer">Working with Heap Viewer</h2>
<ul class="no-bullet">
<!-- this also hides bullet, by default outside box -->
<li><div style="overflow:hidden">
<ol class="padded">
<div class="figure" style="">
<img src="{@docRoot}images/tools/performance/heap-viewer/gettingstarted_image01.png"
alt=""
width="400px" />
<p class="img-caption">
<strong>Figure 1. </strong>Starting Memory Monitor.
</p>
</div>
<li>Connect your mobile device to your computer.</li>
<li>Open your application in Android Studio, build the source, and run it on your device or
emulator.</li>
<li>Start the Android Device Monitor from Android Studio: <strong>Tools -> Android
-> Android Device Monitor</strong>.
<p>You can also start the <a href="{@docRoot}tools/studio/index.html#mem-cpu">Memory Monitor</a>
in Android Studio: Click the <em>Android</em> tab in the lower-left corner of the application
window. The CPU and Memory Monitor views appear.</p> </li>
</ol>
</div></li>
<li><div style="overflow:hidden">
<hr>
<ol class="padded" start="4">
<div class="figure" style="">
<img src="{@docRoot}images/tools/performance/heap-viewer/gettingstarted_image02.png"
alt=""
width="400px" />
<p class="img-caption">
<strong>Figure 2. </strong>Steps for Using Heap Viewer.
</p>
</div>
<li>In the device and application drop-downs, select the app you want to monitor.</li>
</ol>
</div></li>
<li><div style="overflow:hidden">
<hr>
<ol class="padded" start="8">
<div class="figure" style="">
<img src="{@docRoot}images/tools/performance/heap-viewer/gettingstarted_image03.png"
alt=""
width="300px" />
<p class="img-caption">
<strong>Figure 3. </strong>Update Heap button.
</p>
</div>
<li>To save a heap dump, click the Dump Java Heap icon. The heap snapshot file
with the filename <code>Snapshot-yyyy.mm.dd-hh.mm.ss.hprof</code> appears in the
<em>Captures</em> tab.</li>
</ol>
</div></li>
<li><div style="overflow:hidden">
<hr>
<ol class="padded" start="9">
<div class="figure" style="">
<img src="{@docRoot}images/tools/performance/heap-viewer/gettingstarted_image04.png"
alt=""
width="400px" />
<p class="img-caption">
<strong>Figure 4. </strong>Triggering GC (Garbage Collection).
</p>
</div>
<li>Note the <em>Heap updates will happen
after every GC for this client.</em> message.</li>
<li>Click the <strong>Initiate CG</strong> icon to
trigger a garbage collection event.
</li>
</ol>
</div></li>
<li><div style="overflow:hidden">
<hr>
<ol class="padded" start="11">
<div class="figure" style="">
<img src="{@docRoot}images/tools/performance/heap-viewer/gettingstarted_image05.png"
alt=""
width="480px" />
<p class="img-caption">
<strong>Figure 5. </strong>Example Heap Viewer output.
</p>
</div>
<li>Double-click the heap snapshot file to open the heap viewer and see detailed information
about the current allocations on the heap.</li>
</ol>
</div></li>
</ul>
|