<!DOCTYPE HTML>
<!--
about:memory template page
-->
<html id="t">
<head>
<title>About Memory</title>
<link rel="stylesheet" href="shared/css/about_memory.css">
<style>
body {
font-family: Helvetica, sans-serif;
}
div#header select {
font-family: Helvetica, sans-serif;
}
div.viewOptions input {
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>
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' />
<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>
</body>
<script>
enableHelpTooltips();
</script>
</html>