<ul class="toc">
<li><a href="#memory_chart">Memory Chart</a></li>
<li><a href="#details">Details</a></li>
+ <li><a href="#range">Range Analysis</a></li>
<li><a href="#statistics">Statistics</a></li>
<li><a href="#allocation">Persistent Allocations</a></li>
<li><a href="#callstack">Callstack</a></li>
<li><a href="#details">Details</a> table shows the changes of the system and process memory size.</li>
<li><a href="#statistics">Statistics</a> table shows the changes of memory allocation.</li>
<li><a href="#allocation">Persistent Allocations</a> table shows the persistent allocations of the heap.</li>
-<li><a href="#callstack">Callstack</a> table shows the call stacks of each allocation in the Persistent Allocations table.</li>
<li><a href="#map">Memory Map</a> table shows detailed information of the memory mapping.</li>
</ul>
<p class="figure">Figure: Memory usage analysis</p>
<h2 id="memory_chart">Memory Chart</h2>
<p>The memory chart consists of various child charts:</p>
<ul>
-<li>System Memory chart
+<li><strong>System Memory</strong> chart
<p>You can check the memory size of the system and process.</p>
<p class="figure">Figure: System Memory chart</p>
<p align="center"><img alt="System Memory chart" src="../images/da_memory_system.png" /></p>
</li>
-<li>Process Memory chart
+<li><strong>Process Memory</strong> chart
<p>You can check the memory size of the process:</p>
<ul>
<li><strong>VSS</strong>: Virtual Set Size</li>
<p class="figure">Figure: Process Memory chart</p>
<p align="center"><img alt="Process Memory chart" src="../images/da_memory_process.png" /></p>
</li>
-<li>Heap Allocation chart
+<li id="heap"><strong>Heap Allocation</strong> chart
<p>You can check the allocated heap memory size of the process. It is calculated by "total allocation – total free":</p>
<ul>
<li><strong>Total</strong>: Allocated heap memory size of the process</li>
<li><strong>Main Executable</strong>: Allocated heap memory size of the main executable</li></ul>
<p class="figure">Figure: Heap Allocation chart</p>
<p align="center"><img alt="Heap Allocation chart" src="../images/da_memory_heap.png" /></p>
+<p>You can also enable the persistent memory charts by selecting <strong>Persistent Memory Charts</strong> in <strong>View > Report</strong>.</p>
+<p>These charts are shown above the heap allocation charts after tracing is stopped or when the trace is loaded from file.</p>
+<ul>
+<li><strong>Process Persistent</strong>: Size of the heap memory already allocated in the process and not freed by the end of the trace.</li>
+<li><strong>Main Executable Persistent</strong>: Size of the heap memory already allocated by the main executable and not freed by the end of the trace.</li>
+</ul>
+<p class="figure">Figure: Heap Allocation Chart with the Persistent Memory Charts option enabled</p>
+<p align="center"><img alt="Heap Allocation chart with Persistent Memory Charts" src="../images/da_memory_persistent_option.png" /></p>
+
+<p>When you select one of the heap allocation charts or its children, the corresponding <strong>Statistics</strong> table entry is also selected. This can be helpful if you need more detailed information on some process or library.</p>
+<p class="figure">Figure: Cross-focusing from Heap Allocation charts to Statistics table</p>
+<p align="center"><img alt="Cross-focusing from Heap Allocation to Statistics" src="../images/da_memory_heap_statistics.png" /></p>
+
</li>
</ul>
<h2 id="details">Details</h2>
-<p>You can check the changes of the system and process memory size in the Details table.</p>
+<p>You can check the changes of the system and process memory size in the <strong>Details</strong> table.</p>
<p class="figure">Figure: Details table</p>
<p align="center"><img alt="Details table" src="../images/da_memory_details.png" /></p>
-<p>The table contains the following columns:</p>
+<p>The table contains the following columns:</p>
<ul>
<li><strong>current</strong>: Value at the inspection bar on chart</li>
<li><strong>start</strong>: First value in the total range or the selected range data</li>
<p>The table can contain, for example, the following rows:</p>
<ul>
-<li><strong>System Memory</strong>: System-used memory</li>
+<li><strong>System Memory</strong>: System-used memory (only if the system memory feature is enabled)</li>
<li><strong>Process #PID (Total)</strong>: PSS + 3D + GEM of the target process
<ul>
<li><strong>PSS</strong>: Proportional Set Size of a process</li>
<li><strong>Each library</strong>: "Allocated memory – free memory" of each library</li>
</ul>
-<h2 id="statistics">Statistics</h2>
-<p>You can check the change of allocation and free by total amount of each library in the Statistics table.</p>
+<h2 id="range">Range Analysis</h2>
+
+<p>You can add markers to the timeline to divide the timeline into intervals. The allocation and deallocation statistics are shown for each interval individually.</p>
+<p>To add markers:</p>
+<ul>
+<li>Double click on any chart or the time bar within the tracing interval.</li>
+<li>Double click a row in:
+<ul>
+<li><strong>Persistent Allocations</strong> table on the <strong>Memory</strong> page</li>
+<li><strong>Dlog</strong> table or <strong>Call Trace</strong> table on the <strong>Timeline</strong> page</li>
+</ul>
+</li>
+</ul>
+<p>To remove a marker, double click on it.</p>
+<p>Markers and intervals are numbered starting from zero. For more information about the shown statistics data, see <a href="#statistics">Statistics</a>.</p>
+<p class="figure">Figure: Range Analysis view</p>
+
+<p align="center"><img alt="Details table" src="../images/da_memory_range.png" /></p>
+
+
+<h2 id="statistics">Statistics</h2>
+<p>You can check the change of allocation and free by total amount of each library in the <strong>Statistics</strong> table.</p>
<p class="figure">Figure: Statistics table</p>
<p align="center"><img alt="Statistics table" src="../images/da_memory_statistics.png" /></p>
<p>The table contains the following columns:</p>
<ul>
-<li><strong>Persistent Byte</strong>: Remaining allocated memory size that excepts the free memory size in the total or selected area</li>
-<li><strong># Persistent</strong>: Remaining allocated memory count that excepts the free memory count in the total or selected area</li>
+<li>Process PID, path to library called from that process or <strong>Total</strong> entry for aggregated information for such libraries.</li>
+<li><strong># Total Allocations</strong>: All allocated memory count that includes the free memory count in the total or selected area</li>
<li><strong># Freed</strong>: Calling count of the memory free APIs in the total or selected area</li>
+<li><strong># Persistent</strong>: Remaining allocated memory count that excepts the free memory count in the total or selected area</li>
<li><strong>Total Byte</strong>: All allocated memory size that includes free memory size in the total or selected area</li>
-<li><strong># Total</strong>: All allocated memory count that includes the free memory count in the total or selected area</li>
+<li><strong>Persistent Byte</strong>: Remaining allocated memory size that excepts the free memory size in the total or selected area</li>
</ul>
-<h2 id="allocation">Persistent Allocations</h2>
-<p>You can check the persistent allocations of the heap in the Persistent Allocations table.</p>
+<p>When you select one of the <strong>Statistics</strong> table entries, the corresponding heap allocation chart is selected in the charts area. For more information, see <a href="#heap">Heap Allocation chart</a>.</p>
+<p>Note that heap allocation charts are always sorted according to the <strong>Statistics</strong> table entries order. You can change that order by clicking at one of the columns in the <strong>Statistics</strong> table. This is useful if you need to sort the libraries charts, for example by persistent allocations size.</p>
-<p>The table can show 2 types of data:</p>
-<ul>
-<li>Persistent allocations for the entire trace. These are all allocations occurred during the tracing and not freed by the end of the trace. They are shown only after the tracing process is finished.</li>
-<li>Persistent allocations for a selected interval. These are all allocations occurred during the selected interval and not freed by the end of the interval. They can be shown both during tracing and after tracing is stopped. For this type of data, you must select an interval in the Heap Allocation chart.</li>
-</ul>
+<h2 id="allocation">Persistent Allocations</h2>
+<p>You can check the persistent allocations of the heap in the <strong>Persistent Allocations</strong> table. Persistent allocations represent allocations made within selected interval (or in the whole run if no interval is selected) and not freed by the end of interval.</p>
<p class="figure">Figure: Persistent Allocations table</p>
<p align="center"><img alt="Persistent Allocations table" src="../images/da_memory_persistent.png" /></p>
<li><strong>Called Function</strong>: Called allocation function</li>
</ul>
+<p>The table can show 2 types of data:</p>
+<ul>
+<li>Persistent allocations for the entire trace. These are all allocations occurred during the tracing and not freed by the end of the trace. They are shown only after the tracing process is finished.</li>
+<li>Persistent allocations for a selected interval. These are all allocations occurred during the selected interval and not freed by the end of the interval. They can be shown both during tracing and after tracing is stopped. For this type of data, you must select an interval in the <strong>Heap Allocation</strong> chart.</li>
+</ul>
+
+
<h2 id="callstack">Callstack</h2>
-<p>You can see a call stack for each allocation from the Persistent Allocations table in the Callstack table. The allocation's call stack is shown when you select an allocation in the Persistent Allocations table.</p>
+<p>You can see a call stack for each allocation from the <strong>Persistent Allocations</strong> table in the <strong>Callstack</strong> table. The allocation's call stack is shown when you select an allocation in the <strong>Persistent Allocations</strong> table.</p>
<p class="figure">Figure: Callstack table</p>
<p align="center"><img alt="Callstack table" src="../images/da_memory_callstack.png" /></p>
</ul>
<h2 id="map">Memory Map</h2>
-<p>You can check the memory mapping information of a select process in the Memory Map table. Using this table, you can understand how big every library mapped into a process is, including its starting address (low address) and ending address (high address).</p>
+<p>You can check the memory mapping information of a select process in the <strong>Memory Map</strong> table. Using this table, you can understand how big every library mapped into a process is, including its starting address (low address) and ending address (high address).</p>
<p class="figure">Figure: Memory Map table</p>
<p align="center"><img alt="Memory Map table" src="../images/da_memory_map.png" /></p>
</ol>
<h2 id="Restoring_Certificates">Restoring Certificates</h2>
-<p>If you already have both <span style="font-family: Courier New,Courier,monospace">author.p12</span> and <span style="font-family: Courier New,Courier,monospace">distributor.p12</span> certificates, you can import and use them to sign your application:</p>
+<p>If you already have both certificate files, you can import and use them to sign your application:</p>
<ol>
- <li>In the Tizen Studio menu, go to <strong>Tools > Certificate Manager</strong>.
+ <li>In the Tizen Studio menu, go to <strong>Tizen Tool > Certificate Manager</strong>.
</li>
<li>Click the <strong>+</strong> button.
<p align="center"> <img alt="Create new certificate profile" src="../images/migration_add_button.png" /> </p>
<li>Select the <strong>Select an existing author certificate</strong> radio button and click <strong>Next</strong>.
<p align="center"> <img alt="Select an existing author certificate" src="../images/migration_ex_cert.png" /> </p>
</li>
- <li>Click <strong>Browse</strong> and select your <span style="font-family: Courier New,Courier,monospace">author.p12</span> file.
+ <li>Click <strong>Browse</strong> and select your author certificate file.
<p>Enter the password and click <strong>Next</strong>.</p>
<p align="center"> <img alt="Select certificate file" src="../images/migration_author_file.png" /> </p>
</li>
<li>Select the <strong>Select a distributor certificate for another app store</strong> radio button, and click <strong>Next</strong>.
<p align="center"> <img alt="Distributor certificate for another app store" src="../images/migration_dist_cert.png" /> </p>
</li>
- <li>Click <strong>Browse</strong> and select your <span style="font-family: Courier New,Courier,monospace">distributor.p12</span> file.
+ <li>Click <strong>Browse</strong> and select your distributor certificate file.
<p>Enter the password and click <strong>Finish</strong>.</p>
<p align="center"> <img alt="Distributor certificate file" src="../images/migration_dist_file.png" /> </p>
</li>
<ul>
<li>Ubuntu and Mac OS® X:
<ul>
- <li><span style="font-family: Courier New,Courier,monospace">/home/<user>/<TIZEN_STUDIO></span></li>
- <li><span style="font-family: Courier New,Courier,monospace">/home/<user>/<TIZEN_STUDIO_DATA></span></li>
+ <li><span style="font-family: Courier New,Courier,monospace">/home/<user>/<TIZEN_SDK></span></li>
+ <li><span style="font-family: Courier New,Courier,monospace">/home/<user>/<TIZEN_SDK_DATA></span></li>
</ul>
</li>
<li>Windows®:
<ul>
- <li><span style="font-family: Courier New,Courier,monospace">C:\<TIZEN_STUDIO></span></li>
- <li><span style="font-family: Courier New,Courier,monospace">C:\<TIZEN_STUDIO_DATA></span></li>
+ <li><span style="font-family: Courier New,Courier,monospace">C:\<TIZEN_SDK></span></li>
+ <li><span style="font-family: Courier New,Courier,monospace">C:\<TIZEN_SDK_DATA></span></li>
</ul>
</li>
</ul>