1 <!DOCTYPE HTML> 2 3 <!-- 4 about: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> 12 body { 13 font-family: Helvetica, Arial, sans-serif; 14 } 15 div#header select { 16 font-family: Helvetica, Arial, sans-serif; 17 } 18 div.otherbrowsers { 19 font-family: Helvetica, Arial, sans-serif; 20 } 21 table.list#browserComparison tr:not([class*='firstRow']) > *:nth-child(1), 22 table.list#browserComparison tr:not([class*='firstRow']) > *:nth-child(4), 23 table.list#browserComparison tr.firstRow th:nth-child(1), 24 table.list#browserComparison tr.firstRow th:nth-child(2) { 25 border-right: 1px solid #b5c6de; 26 } 27 table.list#memoryDetails tr:not([class*='firstRow']) > *:nth-child(2), 28 table.list#memoryDetails tr:not([class*='firstRow']) > *:nth-child(5), 29 table.list#memoryDetails tr.firstRow th:nth-child(2), 30 table.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 Σ 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