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