| Index: chrome/browser/resources/about_memory_mac.html
|
| diff --git a/chrome/browser/resources/about_memory_mac.html b/chrome/browser/resources/about_memory_mac.html
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..9b6d223d2fd6831036f96c3129e32be543c714b0
|
| --- /dev/null
|
| +++ b/chrome/browser/resources/about_memory_mac.html
|
| @@ -0,0 +1,577 @@
|
| +<!DOCTYPE HTML>
|
| +
|
| +<!--
|
| +about:memory template page
|
| +-->
|
| +<html id="t">
|
| + <head>
|
| + <title>About Memory</title>
|
| +
|
| +<style>
|
| +body {
|
| + font-size: 84%;
|
| + font-family: Helvetica, sans-serif;
|
| + padding: 0.75em;
|
| + margin: 0;
|
| + min-width: 45em;
|
| +}
|
| +
|
| +h1 {
|
| + font-size: 110%;
|
| + font-weight: bold;
|
| + color: #4a8ee6;
|
| + letter-spacing: -1px;
|
| + padding: 0;
|
| + margin: 0;
|
| +}
|
| +h2 {
|
| + font-size: 110%;
|
| + letter-spacing: -1px;
|
| + font-weight: normal;
|
| + color: #4a8ee6;
|
| + padding: 0;
|
| + margin: 0;
|
| + padding: 0.5em 1em;
|
| + color: #3a75bd;
|
| + margin-left: -38px;
|
| + padding-left: 38px;
|
| +
|
| + border-top: 1px solid #3a75bd;
|
| + padding-top: 0.5em;
|
| +
|
| +}
|
| +h2:first-child {
|
| + border-top: 0;
|
| + padding-top: 0;
|
| +}
|
| +span.th {
|
| + padding-left: 0.35em;
|
| +}
|
| +a {
|
| + color: black;
|
| +}
|
| +
|
| +div#header {
|
| + padding: 0.75em 1em;
|
| + padding-top: 0.6em;
|
| + padding-left: 0;
|
| + margin-bottom: 0.75em;
|
| + position: relative;
|
| + overflow: hidden;
|
| + background: #5296de;
|
| + -webkit-background-size: 100%;
|
| + border: 1px solid #3a75bd;
|
| + -webkit-border-radius: 6px;
|
| + color: white;
|
| + text-shadow: 0 0 2px black;
|
| +}
|
| +div#header h1 {
|
| + padding-left: 37px;
|
| + margin: 0;
|
| + display: inline;
|
| + background: url('gear.png') 12px 60% no-repeat;
|
| + color: white;
|
| +}
|
| +div#header p {
|
| + font-size: 84%;
|
| + font-style: italic;
|
| + padding: 0;
|
| + margin: 0;
|
| + color: white;
|
| + padding-left: 0.4em;
|
| + display: inline;
|
| +}
|
| +div#header div.navigation {
|
| + position: absolute;
|
| + top: 0;
|
| + right: 1em;
|
| + line-height: 3.5em;
|
| + font-size: 92%;
|
| +}
|
| +div#header select {
|
| + font-size: 100%;
|
| + font-family: Helvetica, sans-serif;
|
| + border: 1px solid #3a75bd;
|
| + line-height: 140%;
|
| + color: #315d94;
|
| +}
|
| +div#header select option {
|
| + padding: 0 0.2em;
|
| +}
|
| +
|
| +div#sidebar {
|
| + display: none;
|
| + float: left;
|
| + margin-left: 26px;
|
| + width: 45em;
|
| + min-height: 20em;
|
| + padding: 0.75em;
|
| + padding-top: 0;
|
| +
|
| + border-right: 1px solid #cfcfcf;
|
| +}
|
| +div#content {
|
| + margin-left: 0px;
|
| +}
|
| +
|
| +div.viewOptions {
|
| + float: right;
|
| + font-size: 92%;
|
| + color: #5f5f5f;
|
| + margin-top: 1em;
|
| +}
|
| +hr {
|
| + visibility: hidden;
|
| + display: inline;
|
| + padding: 0 0.5em;
|
| +}
|
| +div.viewOptions input {
|
| + font-family: Helvetica, sans-serif;
|
| + font-size: 100%;
|
| + border: 1px solid #b5b5b5;
|
| + -webkit-border-radius: 6px;
|
| + padding: 0.3em 0.4em;
|
| +}
|
| +div.viewOptions input:focus {
|
| + border-color: white;
|
| +}
|
| +
|
| +.k {
|
| + opacity: 0.4;
|
| + font-weight: normal;
|
| + padding-left: 0.1em;
|
| +}
|
| +
|
| +.legend {
|
| + font-size: 84%;
|
| + padding: 0;
|
| + padding-top: 0.4em;
|
| + margin-top: 2em;
|
| + text-align: right;
|
| + line-height: 140%;
|
| + color: #7f7f7f;
|
| +}
|
| +.legend h3 {
|
| + padding: 0;
|
| + padding-right: 0.5em;
|
| + margin: 0;
|
| + font-weight: normal;
|
| + color: black;
|
| + display: inline;
|
| + font-size: 100%;
|
| +}
|
| +.legend .swatch {
|
| + opacity: 0.66;
|
| + padding: 0 0.5em;
|
| + display: inline-block;
|
| + margin-right: 0.2em;
|
| + height: 0.9em;
|
| +}
|
| +.legend .swatch.heavyUse {
|
| + background: #cc0000;
|
| +}
|
| +
|
| +table.list {
|
| + width: 100%;
|
| + line-height: 200%;
|
| + border-collapse: collapse;
|
| + font-size: 84%;
|
| + table-layout: fixed;
|
| +}
|
| +table.list:not([class*='filtered']) tr:nth-child(odd) td {
|
| + background: #eff3ff;
|
| +}
|
| +.hidden {
|
| + display: none;
|
| +}
|
| +table.list th {
|
| + padding: 0 0.5em;
|
| + vertical-align: top;
|
| + font-weight: bold;
|
| + color: #315d94;
|
| + color: black;
|
| + white-space: nowrap;
|
| +}
|
| +table.list .firstRow th {
|
| + text-align: left;
|
| + line-height: 100%;
|
| +}
|
| +table.list .secondRow * {
|
| + text-align: left;
|
| + border-bottom: 1px solid #b5c6de;
|
| +}
|
| +table.list td {
|
| + padding: 0 0.5em;
|
| + vertical-align: top;
|
| + line-height: 1.4em;
|
| + padding-top: 0.35em;
|
| +}
|
| +table.list tr td:nth-last-child(1),
|
| +table.list tr th:nth-last-child(1) {
|
| + padding-right: 1em;
|
| +}
|
| +table.list:not([class*='filtered']) .tab .name {
|
| + padding-left: 1.5em;
|
| +}
|
| +
|
| +table.list .name {
|
| + width: 100%;
|
| +}
|
| +
|
| +table.list .name div {
|
| + height: 1.6em;
|
| + overflow: hidden;
|
| + white-space: nowrap;
|
| + text-overflow: ellipsis;
|
| +}
|
| +table.list .pid {
|
| + width: 4em;
|
| + text-align: right;
|
| +}
|
| +table.list .pid .th {
|
| + padding: 0;
|
| +}
|
| +table.list .type {
|
| + width: 5em;
|
| +}
|
| +table.list .number {
|
| + width: 7em;
|
| + text-align: right;
|
| +}
|
| +table.list .total {
|
| + font-weight: bold;
|
| +}
|
| +table.list .total .name {
|
| + color: #315d94;
|
| + text-align: right;
|
| +}
|
| +table.list .total td {
|
| + border-top: 1px solid #b5c6de;
|
| + background: white !important;
|
| +}
|
| +table.list .noResults {
|
| + display: none;
|
| +}
|
| +table.list.noResults .noResults {
|
| + display: table-row;
|
| +}
|
| +table.list .noResults td {
|
| + text-align: center;
|
| + padding: 3em 0;
|
| + color: #3f3f3f;
|
| +}
|
| +
|
| +.heavyUse {
|
| + color: #cc0000;
|
| + font-weight: bold;
|
| +}
|
| +
|
| +table.list#memoryDetails tr:not([class*='firstRow']) > *:nth-child(2),
|
| +table.list#memoryDetails tr:not([class*='firstRow']) > *:nth-child(5),
|
| +table.list#memoryDetails tr.firstRow th:nth-child(2) {
|
| + border-right: 1px solid #b5c6de;
|
| +}
|
| +
|
| +table.list#browserComparison tr:not([class*='firstRow']) > *:nth-child(1),
|
| +table.list#browserComparison tr:not([class*='firstRow']) > *:nth-child(4),
|
| +table.list#browserComparison tr.firstRow th:nth-child(1) {
|
| + border-right: 1px solid #b5c6de;
|
| +}
|
| +table.list#browserComparison .name {
|
| + padding-left: 25px;
|
| + background-position: 5px center;
|
| + background-repeat: no-repeat;
|
| +}
|
| +
|
| +div.help {
|
| + display: inline-block;
|
| + width: 14px;
|
| + margin: -1px 0;
|
| + height: 14px;
|
| + background: url('help.gif') center bottom no-repeat;
|
| + opacity: 0.33;
|
| +}
|
| +div.help:hover {
|
| + opacity: 1;
|
| +}
|
| +div.help div {
|
| + display: none;
|
| +}
|
| +#helpTooltip {
|
| + z-index: 1000;
|
| + position: absolute;
|
| + background: #d6e8ff;
|
| + padding: 0.3em 0.8em;
|
| + max-width: 30em;
|
| + -webkit-box-shadow: 3px 3px 4px rgba(0, 0, 0, 0.33);
|
| + border: 1px solid #a8cfff;
|
| + -webkit-border-radius: 0;
|
| + line-height: 140%;
|
| + font-size: 92%;
|
| +}
|
| +#helpTooltip p {
|
| + margin: 0.6em 0;
|
| +}
|
| +div.otherbrowsers {
|
| + font-family: Helvetica, sans-serif;
|
| + font-size: 84%;
|
| + width: 100%;
|
| + text-align: center;
|
| +}
|
| +</style>
|
| +<script>
|
| +function reload() {
|
| + if (document.getElementById('helpTooltip'))
|
| + return;
|
| + history.go(0);
|
| +}
|
| +
|
| +function formatNumber(str) {
|
| + str += '';
|
| + if (str == '0') {
|
| + return 'N/A ';
|
| + }
|
| + var x = str.split('.');
|
| + var x1 = x[0];
|
| + var x2 = x.length > 1 ? '.' + x[1] : '';
|
| + var regex = /(\d+)(\d{3})/;
|
| + while (regex.test(x1)) {
|
| + x1 = x1.replace(regex, '$1' + ',' + '$2');
|
| + }
|
| + return x1;
|
| +}
|
| +
|
| +function addToSum(id, value) {
|
| + var target = document.getElementById(id);
|
| + var sum = parseInt(target.innerHTML);
|
| + sum += parseInt(value);
|
| + target.innerHTML = sum;
|
| +}
|
| +
|
| +function handleHelpTooltipMouseOver(event) {
|
| + var el = document.createElement('div');
|
| + el.id = 'helpTooltip';
|
| + el.innerHTML = event.toElement.getElementsByTagName('div')[0].innerHTML;
|
| + el.style.top = 0;
|
| + el.style.left = 0;
|
| + el.style.visibility = 'hidden';
|
| + document.body.appendChild(el);
|
| +
|
| + var width = el.offsetWidth;
|
| + var height = el.offsetHeight;
|
| +
|
| + if (event.pageX - width - 50 + document.body.scrollLeft >= 0 ) {
|
| + el.style.left = (event.pageX - width - 20) + 'px';
|
| + } else {
|
| + el.style.left = (event.pageX + 20) + 'px';
|
| + }
|
| +
|
| +
|
| + if (event.pageY - height - 50 + document.body.scrollTop >= 0) {
|
| + el.style.top = (event.pageY - height - 20) + 'px';
|
| + } else {
|
| + el.style.top = (event.pageY + 20) + 'px';
|
| + }
|
| +
|
| + el.style.visibility = 'visible';
|
| +}
|
| +
|
| +function handleHelpTooltipMouseOut(event) {
|
| + var el = document.getElementById('helpTooltip');
|
| + el.parentNode.removeChild(el);
|
| +}
|
| +
|
| +function enableHelpTooltips() {
|
| + var helpEls = document.getElementsByClassName('help');
|
| +
|
| + for (var i = 0, helpEl; helpEl = helpEls[i]; i++) {
|
| + helpEl.onmouseover = handleHelpTooltipMouseOver;
|
| + helpEl.onmouseout = handleHelpTooltipMouseOut;
|
| + }
|
| +}
|
| +
|
| +//setInterval("reload()", 10000);
|
| +</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' />
|
| + </colgroup>
|
| + <tr class='firstRow doNotFilter'>
|
| + <th>
|
| + </th>
|
| + <th colspan='2'>
|
| + 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>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='name'>
|
| + Resident
|
| + </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(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' />
|
| + </colgroup>
|
| + <tr class='firstRow doNotFilter'>
|
| + <th>
|
| + </th>
|
| + <th>
|
| + </th>
|
| + <th colspan='2'>
|
| + 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'>
|
| + 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(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(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>
|
| +</body>
|
| +<script>
|
| + enableHelpTooltips();
|
| +</script>
|
| +</html>
|
|
|