154 lines
5.4 KiB
Plaintext
154 lines
5.4 KiB
Plaintext
page.title=Allocation Tracker Walkthrough
|
|
meta.tags="android, performance, profiling, tools, memoryleaks, memoryheap"
|
|
page.tags="android", "performance", "profiling", "tools", "memoryleaks", "memoryheap"
|
|
page.metaDescription=Record you app's memory allocations with their call stack to identify code that allocates and frees objects unnecessarily.
|
|
page.image=tools/performance/thumbnails/tools_allocation_tracker.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="#WorkingWithAllocationTracker">Working with Allocation Tracker</a></li>
|
|
</ul>
|
|
|
|
<h2>You should also read</h2>
|
|
<ul>
|
|
<li><a href="{@docRoot}tools/performance/heap-viewer/index.html">
|
|
Heap Viewer Walkthrough</a></li>
|
|
<li><a href="{@docRoot}tools/performance/memory-monitor/index.html">
|
|
Memory Monitor 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 Allocation Tracker tool in Android
|
|
Studio. Allocation Tracker records an app's memory allocations and lists all
|
|
allocated objects for the profiling cycle with their call stack, size, and allocating code.</p>
|
|
|
|
<p>What it's good for:</p>
|
|
|
|
<ul>
|
|
<li>Identifying where many similar object types, from roughly the same call stack, are
|
|
allocated and deallocated over a very short period of time.</li>
|
|
|
|
<li>Finding the places in your code that may contribute to inefficient memory use.</li>
|
|
</ul>
|
|
|
|
<p>Before using Allocation Tracker, profile your code with the
|
|
<a href="{@docRoot}tools/performance/memory-monitor/index.html">Memory
|
|
Monitor Tool</a>. If you see many garbage collection events in a short amount of time, use
|
|
<a href="{@docRoot}tools/performance/heap-viewer/index.html">Heap
|
|
Viewer</a> to identify candidate object types, and Allocation Tracker to determine where this is
|
|
happening in your code.</p>
|
|
|
|
<h2 id="WhatYouNeed">Prerequisites</h2>
|
|
|
|
<ul>
|
|
<li>A mobile device 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="WorkingWithAllocationTracker">Working with Allocation Tracker</h2>
|
|
|
|
<p>Allocation Tracker records each memory allocation that your app performs during the profiling
|
|
cycle. You tell Allocation Tracker to start recording and it logs allocations
|
|
until you tell it to stop.</p>
|
|
|
|
<hr>
|
|
<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/allocation-tracker/gettingstarted_image01.png"
|
|
alt=""
|
|
width="400px" />
|
|
<p class="img-caption">
|
|
<strong>Figure 1. </strong>Steps for starting Allocation Tracker in Android DDMS.
|
|
</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>Click the <b>Android</b> button at the bottom of your Android Studio window.</li>
|
|
|
|
<li>If you are using the Android Device Monitor, click the RECORD button
|
|
<img src="{@docRoot}images/tools/performance/allocation-tracker/gettingstarted_image02.png">
|
|
(Start Allocation Tracking tooltip) in the Android DDMS tool bar. If you are using Android
|
|
Studio, click the
|
|
<img src="{@docRoot}images/tools/performance/allocation-tracker/gettingstarted_image02.png">
|
|
icon in the <a href="{@docRoot}tools/studio/index.html#mem-cpu">Memory Monitor</a> tool
|
|
bar. </li>
|
|
|
|
<li>Interact with your application.</li>
|
|
|
|
<li>Click the (same) STOP button (Stop Allocation Tracking tooltip).</li>
|
|
</ol>
|
|
</div></li>
|
|
|
|
<li><div style="overflow:hidden">
|
|
<hr>
|
|
<ol class="padded" start="7">
|
|
|
|
<div class="figure" style="">
|
|
<img src="{@docRoot}images/tools/performance/allocation-tracker/gettingstarted_image03.png"
|
|
alt=""
|
|
width="440px" />
|
|
<p class="img-caption">
|
|
<strong>Figure 2. </strong>Example of Allocation Tracker output in Android DDMS.
|
|
</p>
|
|
</div>
|
|
|
|
<li>After a few seconds, a pane with your recorded data opens.
|
|
|
|
<p>Note that allocations are logged on
|
|
the device, and the data file is transferred to the host computer, parsed for information, and
|
|
displayed.</p></li>
|
|
|
|
<li>The pane populates with a table.
|
|
|
|
<ul>
|
|
<li>Each row represents a memory allocation event.</li>
|
|
|
|
<li>Each column represents information about the allocation, such as the object type,
|
|
the thread, and its size. </li>
|
|
|
|
<li>The columns are movable, resizable, and sortable.</li>
|
|
</ul>
|
|
|
|
<p>Use the Filter to show only allocations from your app.</li>
|
|
|
|
<li>Click on an object to see its full stack trace.</li>
|
|
</ol>
|
|
</div></li>
|
|
</ul>
|