<!DOCTYPE HTML>

<!--
about:memory template page
-->
<html id="t">
<head>
  <title>About Memory</title>
  <link rel="stylesheet" href="chrome://memory-redirect/about_memory.css">
<style>
body {
  font-family: Helvetica, sans-serif;
}
div#header select {
  font-family: Helvetica, sans-serif;
}
div.otherbrowsers {
  font-family: Helvetica, sans-serif;
}
table.list#browserComparison tr:not([class*='firstRow']) > *:nth-child(1),
table.list#browserComparison tr:not([class*='firstRow']) > *:nth-child(6),
table.list#browserComparison tr.firstRow th:nth-child(1) {
  border-right: 1px solid #b5c6de;
}
table.list#memoryDetails tr:not([class*='firstRow']) > *:nth-child(2),
table.list#memoryDetails tr:not([class*='firstRow']) > *:nth-child(7),
table.list#memoryDetails tr.firstRow th:nth-child(2) {
  border-right: 1px solid #b5c6de;
}
</style>
<script src="chrome://resources/js/load_time_data.js"></script>
<script src="chrome://memory-redirect/memory.js"></script>
<script src="chrome://memory-redirect/strings.js"></script>
</head>
<body>
    <div id='header'>
      <h1>
        About memory
      </h1>
      <p>
        Measuring memory usage in a multi-process browser
      </p>
    </div>

    <div id='content'>
      <h2>
        Summary
        <div class='help'>
          <div>
            <p>
              Summary of memory used by currently active browsers.<p>
              For Chromium, processes used to to display diagnostics
              information (such as this "about:memory") are excluded.
            </p>
          </div>
        </div>
      </h2>

      <table class='list' id='browserComparison'>
        <colgroup>
          <col class='name'>
          <col class='number'>
          <col class='number'>
          <col class='number'>
          <col class='number'>
        </colgroup>
        <tr class='firstRow doNotFilter'>
          <th>
          </th>
          <th colspan='4'>
            Memory
            <div class='help'>
              <div>
                <p>
                  <strong>Memory</strong>
                </p>
                <p>
                  <strong>Resident:</strong>
                  Amount of memory that is present in physical RAM.
                  This is the best indicator of browser memory resource usage.
                </p>
                <p>
                  <strong>Shared:</strong>
                  Amount of memory that is present in physical RAM and can
                  be shared with another process.
                </p>
                <p>
                  <strong>Private:</strong>
                  Amount of memory that is present in physical RAM and can not
                  be shared with another process.
                </p>
                <p>
                  <strong>Virtual:</strong>
                  Amount of address space allocated in virtual memory.
                </p>

                <p>
                  <i>(Note that the memory for this tab is not included in the browser totals.)</i>
                </p>
              </div>
            </div>
          </th>
        </tr>
        <tr class='secondRow doNotFilter'>
          <th class='name'>
            Browser
          </th>
          <th class='number'>
            Resident
          </th>
          <th class='number'>
            Shared
          </th>
          <th class='number'>
            Private
          </th>
          <th class='number'>
            Virtual
          </th>
        </tr>
        <tr jsselect="browsers">
          <td class='name'>
            <div>
              <strong jscontent="name"></strong> <span jscontent="version"></span>
            </div>
          </td>
          <td class='number'>
            <span class='th' jscontent="formatNumber(ws_shareable)"></span><span class='k'>k</span>
          </td>
          <td class='number'>
            <span class='th' jscontent="formatNumber(ws_shared)"></span><span class='k'>k</span>
          </td>
          <td class='number'>
            <span class='th' jscontent="formatNumber(ws_priv)"></span><span class='k'>k</span>
          </td>
          <td class='number'>
            <span class='th' jscontent="formatNumber(comm_priv)"></span><span class='k'>k</span>
          </td>
        </tr>
      </table>
      <div class=otherbrowsers jsdisplay="browsers.length == 1">
        Note: If other browsers (e.g., Safari, Firefox, Camino) are running, I'll show their memory details here.
      </div>
      <div class="otherbrowsers">
        (Bug: We seriously overcount our own memory usage: <a href="http://crbug.com/25454">Issue 25454</a>.)
      </div>

      <br><br><br>

      <h2>
        Processes
        <div class='help'>
          <div>
            <p>
              Details of memory usage for each of Chromium's processes.
            </p>
          </div>
        </div>
      </h2>

      <table class='list' id='memoryDetails'>
        <colgroup>
          <col class='pid'>
          <col class='name'>
          <col class='number'>
          <col class='number'>
          <col class='number'>
          <col class='number'>
        </colgroup>
        <tr class='firstRow doNotFilter'>
          <th>
          </th>
          <th>
          </th>
          <th colspan='4'>
            Memory
          </th>
        </tr>
        <tr class='secondRow doNotFilter'>
          <th class='pid'>
            PID
          </th>
          <th class='name'>
            Name
          </th>
          <th class='number'>
            Resident
          </th>
          <th class='number'>
            Shared
          </th>
          <th class='number'>
            Private
          </th>
          <th class='number'>
            Virtual
          </th>
        </tr>

        <tr jsselect="browzr_data">
          <td class='pid'>
            <span class='th' jscontent="pid"></span>
          </td>
          <td class='name'>
            <div>
              Browser
            </div>
          </td>
          <td class='number'>
            <span class='th' jscontent="formatNumber(ws_shareable)"></span><span class='k'>k</span>
          </td>
          <td class='number'>
            <span class='th' jscontent="formatNumber(ws_shared)"></span><span class='k'>k</span>
          </td>
          <td class='number'>
            <span class='th' jscontent="formatNumber(ws_priv)"></span><span class='k'>k</span>
          </td>
          <td class='number'>
            <span class='th' jscontent="formatNumber(comm_priv)"></span><span class='k'>k</span>
          </td>
        </tr>
        <tr jsselect="child_data">
          <td class='pid'>
            <span class='th' jscontent="pid"></span>
          </td>
          <td class='name'>
            <div jscontent="child_name"></div>
            <div jsselect="titles">
              <span jscontent="$this"></span><br>
            </div>
          </td>
          <td class='number'>
            <span class='th' jscontent="formatNumber(ws_shareable)"></span><span class='k'>k</span>
          </td>
          <td class='number'>
            <span class='th' jscontent="formatNumber(ws_shared)"></span><span class='k'>k</span>
          </td>
          <td class='number'>
            <span class='th' jscontent="formatNumber(ws_priv)"></span><span class='k'>k</span>
          </td>
          <td class='number'>
            <span class='th' jscontent="formatNumber(comm_priv)"></span><span class='k'>k</span>
          </td>
        </tr>

        <tr class='noResults'>
          <td colspan='99'>
            No results found.
          </td>
        </tr>
      </table>
      <div class="otherbrowsers">
        (Note: Due to memory sharing between processes, summing memory usage does not give total memory usage.)
      </div>
    </div>
    <script src="chrome://resources/js/jstemplate_compiled.js"></script>
</body>
</html>
