1<!DOCTYPE HTML>
2
3<!--
4about:memory template page
5-->
6<html id="t">
7<head>
8  <meta charset="utf-8">
9  <title>About Memory</title>
10  <link rel="stylesheet" href="chrome://memory-redirect/about_memory.css">
11<style>
12body {
13  font-family: Helvetica, Arial, sans-serif;
14}
15div#header select {
16  font-family: Helvetica, Arial, sans-serif;
17}
18div.otherbrowsers {
19  font-family: Helvetica, Arial, sans-serif;
20}
21table.list#browserComparison tr:not([class*='firstRow']) > *:nth-child(1),
22table.list#browserComparison tr:not([class*='firstRow']) > *:nth-child(4),
23table.list#browserComparison tr.firstRow th:nth-child(1),
24table.list#browserComparison tr.firstRow th:nth-child(2) {
25  border-right: 1px solid #b5c6de;
26}
27table.list#memoryDetails tr:not([class*='firstRow']) > *:nth-child(2),
28table.list#memoryDetails tr:not([class*='firstRow']) > *:nth-child(5),
29table.list#memoryDetails tr.firstRow th:nth-child(2),
30table.list#memoryDetails tr.firstRow th:nth-child(3) {
31  border-right: 1px solid #b5c6de;
32}
33</style>
34<script src="chrome://resources/js/load_time_data.js"></script>
35<script src="chrome://memory-redirect/memory.js"></script>
36<script src="chrome://memory-redirect/strings.js"></script>
37</head>
38<body>
39    <div id="header">
40      <h1>
41        About memory
42      </h1>
43      <p>
44        Measuring memory usage in a multi-process browser
45      </p>
46    </div>
47
48    <div id="content">
49      <h2>
50        Summary
51        <div class="help">
52          <div>
53            <p>
54              Summary of memory used by currently active browsers. For browsers
55              which use multiple processes, memory reflects aggregate memory
56              used across all browser processes.
57            </p>
58            <p>
59              For <span jscontent="current_browser_name"></span>, processes used
60              to to display diagnostics information (such as this
61              "about:memory") are excluded.
62            </p>
63          </div>
64        </div>
65      </h2>
66
67      <table class="list" id="browserComparison">
68        <colgroup>
69          <col class="name">
70          <col class="number">
71          <col class="number">
72          <col class="number">
73          <col class="number">
74          <col class="number">
75        </colgroup>
76        <tr class="firstRow doNotFilter">
77          <th>
78          </th>
79          <th colspan="3">
80            Memory
81            <div class="help">
82              <div>
83                <p>
84                  <strong>Memory</strong>
85                </p>
86                <p>
87                  <strong>Private:</strong>
88                  Resident memory size that is not shared with any other
89                  process.  This is the best indicator of browser memory
90                  resource usage.
91                </p>
92                <p>
93                  <strong>Shared:</strong>
94                  Resident memory size that is currently shared with 2 or more
95                  processes.  Note: For browsers using multiple processes, if we
96                  simply added the shared memory of each individual process,
97                  this value would be inflated. Therefore, this value is
98                  computed as an approximate value for shared memory in each of
99                  the browser's processes. Note also that shared memory varies
100                  depending on what other processes are running on the system,
101                  and may be difficult to measure reproducibly.
102                </p>
103                <p>
104                  <strong>Total:</strong>
105                  The sum of the private + shared resident memory sizes.
106                </p>
107              </div>
108            </div>
109          </th>
110          <th colspan="2">
111            Virtual memory
112            <div class="help">
113              <div>
114                <p>
115                  <strong>Virtual memory</strong>
116                </p>
117                <p>
118                  <strong>Private:</strong>
119                  The resident and paged bytes committed for use by only this
120                  process.
121                </p>
122                <p>
123                  <strong>Mapped:</strong>
124                  Total bytes allocated by this process that are mapped into the
125                  view of a section, backed by either system pagefile or file
126                  system. This is primarily memory-mapped files.
127                </p>
128              </div>
129            </div>
130          </th>
131        </tr>
132        <tr class="secondRow doNotFilter">
133          <th class="name">
134            Browser
135          </th>
136          <th class="name">
137            Private
138          </th>
139          <th class="number">
140            Shared
141          </th>
142          <th class="number">
143            Total
144          </th>
145          <th class="number">
146            Private
147          </th>
148          <th class="number">
149            Mapped
150          </th>
151        </tr>
152        <tr jsselect="browsers">
153          <td class="name">
154            <div>
155              <strong jscontent="name"></strong>
156              <span jscontent="version"></span>
157            </div>
158          </td>
159          <td class="number">
160            <span class="th"
161                jscontent="formatNumber(ws_priv + ws_shareable - ws_shared)">
162            </span><span class="k">k</span>
163          </td>
164          <td class="number">
165            <span class="th" jscontent="formatNumber(ws_shared / processes)">
166            </span><span class="k">k</span>
167          </td>
168          <td class="number">
169            <span class="th"
170                jscontent="formatNumber(ws_priv + ws_shareable - ws_shared +
171                (ws_shared / processes))"></span><span class="k">k</span>
172          </td>
173          <td class="number">
174            <span class="th" jscontent="formatNumber(comm_priv)"></span>
175            <span class="k">k</span>
176          </td>
177          <td class="number">
178            <span class="th" jscontent="formatNumber(comm_map)"></span>
179            <span class="k">k</span>
180          </td>
181        </tr>
182      </table>
183      <div class="otherbrowsers" jsdisplay="browsers.length == 1">
184        Note: This page will show memory use for all running browsers,
185        not just Chrome.
186      </div>
187      <div class="otherbrowsers" jsdisplay="browsers.length > 1">
188        Note: Chrome includes memory used by plug-ins, other browsers may not.
189      </div>
190
191      <br><br><br>
192
193      <h2>
194        Processes
195        <div class="help">
196          <div>
197            <p>
198              Details of memory usage for each of
199              <span jscontent="current_browser_name"></span>'s processes.
200            </p>
201          </div>
202        </div>
203      </h2>
204
205      <table class="list" id="memoryDetails">
206        <colgroup>
207          <col class="pid">
208          <col class="name">
209          <col class="number">
210          <col class="number">
211          <col class="number">
212          <col class="number">
213          <col class="number">
214        </colgroup>
215        <tr class="firstRow doNotFilter">
216          <th>
217          </th>
218          <th>
219          </th>
220          <th colspan="3">
221            Memory
222          </th>
223          <th colspan="2">
224            Virtual memory
225          </th>
226
227        </tr>
228        <tr class="secondRow doNotFilter">
229          <th class="pid">
230            PID
231          </th>
232          <th class="name">
233            Name
234          </th>
235          <th class="number">
236            Private
237          </th>
238          <th class="number">
239            Shared
240          </th>
241          <th class="number">
242            Total
243          </th>
244          <th class="number">
245            Private
246          </th>
247          <th class="number">
248            Mapped
249          </th>
250        </tr>
251
252        <tr jsselect="browzr_data">
253          <td class="pid">
254            <span class="th" jscontent="pid"></span>
255          </td>
256          <td class="name">
257            <div>
258              Browser
259            </div>
260          </td>
261          <td class="number">
262            <span class="th" jseval="addToSum('tot_ws_priv', $this.ws_priv +
263                $this.ws_shareable - $this.ws_shared)" jscontent="ws_priv +
264            ws_shareable - ws_shared"></span><span class="k">k</span>
265          </td>
266          <td class="number">
267            <span class="th" jscontent="ws_shared"></span>
268            <span class="k">k</span>
269          </td>
270          <td class="number">
271            <span class="th" jseval="addToSum('tot_ws_tot', $this.ws_priv +
272                $this.ws_shareable)" jscontent="ws_priv +
273            ws_shareable"></span><span class="k">k</span>
274          </td>
275          <td class="number">
276            <span class="th" jseval="addToSum('tot_comm_priv', $this.comm_priv)"
277                jscontent="comm_priv"></span><span class="k">k</span>
278          </td>
279          <td class="number">
280            <span class="th" jseval="addToSum('tot_comm_map', $this.comm_map)"
281                jscontent="comm_map"></span><span class="k">k</span>
282          </td>
283        </tr>
284        <tr jsselect="child_data">
285          <td class="pid">
286            <span class="th" jscontent="pid"></span>
287          </td>
288          <td class="name">
289            <div jscontent="child_name"></div>
290            <div jsselect="titles">
291              <span jscontent="$this"></span><br>
292            </div>
293          </td>
294          <td class="number">
295            <span class="th" jseval="addToSum('tot_ws_priv', $this.ws_priv +
296                $this.ws_shareable - $this.ws_shared)" jscontent="ws_priv +
297            ws_shareable - ws_shared"></span><span class="k">k</span>
298          </td>
299          <td class="number">
300            <span class="th" jscontent="ws_shared"></span><span
301                class="k">k</span>
302          </td>
303          <td class="number">
304            <span class="th" jseval="addToSum('tot_ws_tot', $this.ws_priv +
305                $this.ws_shareable)" jscontent="ws_priv +
306            ws_shareable"></span><span class="k">k</span>
307          </td>
308          <td class="number">
309            <span class="th" jseval="addToSum('tot_comm_priv', $this.comm_priv)"
310                jscontent="comm_priv"></span><span class="k">k</span>
311          </td>
312          <td class="number">
313            <span class="th" jseval="addToSum('tot_comm_map', $this.comm_map)"
314                jscontent="comm_map"></span><span class="k">k</span>
315          </td>
316        </tr>
317        <tr class="total doNotFilter">
318          <td class="pid">
319          </td>
320          <td class="name">
321            &Sigma;
322          </td>
323          <td class="number">
324            <span class="th" id="tot_ws_priv">0</span><span class="k">k</span>
325          </td>
326          <td class="number">
327          </td>
328          <td class="number">
329            <span class="th" id="tot_ws_tot">0</span><span class="k">k</span>
330          </td>
331          <td class="number">
332            <span class="th" id="tot_comm_priv">0</span><span class="k">k</span>
333          </td>
334          <td class="number">
335            <div class="help">
336              <div>
337                <p>
338                  This is an approximation. Conceptually, this is the total
339                  amount of in-memory pages for the entire logical
340                  <span jscontent="current_browser_name"></span> application,
341                  without double counting shared pages (e.g.  mapped DLLs,
342                  SharedMemory bitmaps, etc.) across the browser and renderers.
343                </p>
344              </div>
345            </div>
346            <span class="th" id="tot_comm_map">0</span><span class="k">k</span>
347          </td>
348        </tr>
349
350        <tr class="noResults">
351          <td colspan="99">
352            No results found.
353          </td>
354        </tr>
355      </table>
356    </div>
357    <script src="chrome://resources/js/jstemplate_compiled.js"></script>
358</body>
359</html>
360