1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-01-12 22:40:46 -08:00
emacs/mps/manual/html/glossary/d.html
Gareth Rees 06057a4d52 Bring html up to date.
Copied from Perforce
 Change: 181168
 ServerID: perforce.ravenbrook.com
2013-03-18 15:13:54 +00:00

460 lines
No EOL
32 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Memory Management Glossary: D &mdash; Memory Pool System 1.111.0 documentation</title>
<link rel="stylesheet" href="../_static/mps.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../',
VERSION: '1.111.0',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
};
</script>
<script type="text/javascript" src="../_static/jquery.js"></script>
<script type="text/javascript" src="../_static/underscore.js"></script>
<script type="text/javascript" src="../_static/doctools.js"></script>
<link rel="copyright" title="Copyright" href="../copyright.html" />
<link rel="top" title="Memory Pool System 1.111.0 documentation" href="../index.html" />
<link rel="up" title="Memory Management Glossary" href="index.html" />
<link rel="next" title="Memory Management Glossary: E" href="e.html" />
<link rel="prev" title="Memory Management Glossary: C" href="c.html" />
</head>
<body>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="right" >
<a href="e.html" title="Memory Management Glossary: E"
accesskey="N">next</a> |</li>
<li class="right" >
<a href="c.html" title="Memory Management Glossary: C"
accesskey="P">previous</a> |</li>
<li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> &raquo;</li>
<li><a href="index.html" accesskey="U">Memory Management Glossary</a> &raquo;</li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body">
<div class="section" id="memory-management-glossary-d">
<span id="glossary-d"></span><h1>Memory Management Glossary: D<a class="headerlink" href="#memory-management-glossary-d" title="Permalink to this headline"></a></h1>
<p class="glossary-alphabet"><a class="reference internal" href="a.html#glossary-a"><em>A</em></a>
| <a class="reference internal" href="b.html#glossary-b"><em>B</em></a>
| <a class="reference internal" href="c.html#glossary-c"><em>C</em></a>
| <a class="reference internal" href="#glossary-d"><em>D</em></a>
| <a class="reference internal" href="e.html#glossary-e"><em>E</em></a>
| <a class="reference internal" href="f.html#glossary-f"><em>F</em></a>
| <a class="reference internal" href="g.html#glossary-g"><em>G</em></a>
| <a class="reference internal" href="h.html#glossary-h"><em>H</em></a>
| <a class="reference internal" href="i.html#glossary-i"><em>I</em></a>
| J
| <a class="reference internal" href="k.html#glossary-k"><em>K</em></a>
| <a class="reference internal" href="l.html#glossary-l"><em>L</em></a>
| <a class="reference internal" href="m.html#glossary-m"><em>M</em></a>
| <a class="reference internal" href="n.html#glossary-n"><em>N</em></a>
| <a class="reference internal" href="o.html#glossary-o"><em>O</em></a>
| <a class="reference internal" href="p.html#glossary-p"><em>P</em></a>
| <a class="reference internal" href="q.html#glossary-q"><em>Q</em></a>
| <a class="reference internal" href="r.html#glossary-r"><em>R</em></a>
| <a class="reference internal" href="s.html#glossary-s"><em>S</em></a>
| <a class="reference internal" href="t.html#glossary-t"><em>T</em></a>
| <a class="reference internal" href="u.html#glossary-u"><em>U</em></a>
| <a class="reference internal" href="v.html#glossary-v"><em>V</em></a>
| <a class="reference internal" href="w.html#glossary-w"><em>W</em></a>
| X
| Y
| <a class="reference internal" href="z.html#glossary-z"><em>Z</em></a></p>
<dl class="glossary docutils">
<dt id="term-dangling-pointer">dangling pointer</dt>
<dd><p class="first">A dangling <a class="reference internal" href="p.html#term-pointer"><em class="xref std std-term">pointer</em></a> is a surviving <a class="reference internal" href="r.html#term-reference"><em class="xref std std-term">reference</em></a> to
an <a class="reference internal" href="o.html#term-object"><em class="xref std std-term">object</em></a> that no longer exists at that
<a class="reference internal" href="a.html#term-address"><em class="xref std std-term">address</em></a>.</p>
<p>In <a class="reference internal" href="m.html#term-manual-memory-management"><em class="xref std std-term">manual memory management</em></a>, dangling pointers
typically arise from one of:</p>
<ol class="arabic simple">
<li>A <a class="reference internal" href="p.html#term-premature-free"><em class="xref std std-term">premature free</em></a>, where an object is <a class="reference internal" href="f.html#term-free-1"><em class="xref std std-term">freed<sup>(1)</sup></em></a>, but a reference is retained;</li>
<li>Retaining a reference to a <a class="reference internal" href="s.html#term-stack-allocation"><em class="xref std std-term">stack-allocated</em></a> object, after the relevant <a class="reference internal" href="s.html#term-stack-frame"><em class="xref std std-term">stack frame</em></a>
has been popped.</li>
</ol>
<p class="last">Dangling pointers can occur under <a class="reference internal" href="a.html#term-automatic-memory-management"><em class="xref std std-term">automatic memory
management</em></a>, because of a <a class="reference internal" href="g.html#term-garbage-collection"><em class="xref std std-term">garbage collection</em></a> bug (such
as premature collection, or <a class="reference internal" href="m.html#term-moving-garbage-collector"><em class="xref std std-term">moving</em></a> without updating all <a class="reference internal" href="r.html#term-reference"><em class="xref std std-term">references</em></a>), but this
is much rarer because garbage collection code is usually a
single common core of reused code in which these bugs can be
fixed systematically.</p>
</dd>
<dt id="term-data-stack">data stack</dt>
<dd><p class="first">A <a class="reference internal" href="s.html#term-stack"><em class="xref std std-term">stack</em></a> used to manage the storage of
<a class="reference internal" href="s.html#term-stack-allocation"><em class="xref std std-term">stack-allocated</em></a> <a class="reference internal" href="o.html#term-object"><em class="xref std std-term">objects</em></a>,
other than <a class="reference internal" href="a.html#term-activation-record"><em class="xref std std-term">activation records</em></a>, often under program
control.</p>
<p>Because of the limitations that may be imposed on the
<a class="reference internal" href="c.html#term-control-stack"><em class="xref std std-term">control stack</em></a>, or to support stack-like semantics for
certain data structures, some language implementations manage
additional data stacks in software for storing objects that
have <a class="reference internal" href="#term-dynamic-extent"><em class="xref std std-term">dynamic extent</em></a> but that do not fit within the
constraints of the control stack.</p>
<div class="admonition-see-also last admonition seealso">
<p class="first admonition-title">See also</p>
<p class="last"><a class="reference internal" href="c.html#term-control-stack"><em class="xref std std-term">control stack</em></a>.</p>
</div>
</dd>
<dt id="term-dead">dead</dt>
<dd><p class="first">An <a class="reference internal" href="o.html#term-object"><em class="xref std std-term">object</em></a> is dead if it is not <a class="reference internal" href="l.html#term-live"><em class="xref std std-term">live</em></a>; that is,
when the <a class="reference internal" href="m.html#term-mutator"><em class="xref std std-term">mutator</em></a> cannot reach any state in which it
accesses the object.</p>
<p>It is not possible, in general, for <a class="reference internal" href="g.html#term-garbage-collector"><em class="xref std std-term">garbage collectors</em></a>
to determine exactly which <a class="reference internal" href="o.html#term-object"><em class="xref std std-term">objects</em></a> are dead and which
are live. Instead, they use some approximation to detect
objects that are provably dead, such as those that are
<a class="reference internal" href="u.html#term-unreachable"><em class="xref std std-term">unreachable</em></a>.</p>
<div class="admonition-opposite-term admonition">
<p class="first admonition-title">Opposite term</p>
<p class="last"><a class="reference internal" href="l.html#term-live"><em class="xref std std-term">live</em></a>.</p>
</div>
<div class="admonition-see-also last admonition seealso">
<p class="first admonition-title">See also</p>
<p class="last"><a class="reference internal" href="g.html#term-garbage"><em class="xref std std-term">garbage</em></a>, <a class="reference internal" href="u.html#term-undead"><em class="xref std std-term">undead</em></a>, <a class="reference internal" href="f.html#term-free-3"><em class="xref std std-term">free<sup>(3)</sup></em></a>.</p>
</div>
</dd>
<dt id="term-deallocate">deallocate</dt>
<dd><div class="admonition-see first last admonition">
<p class="first admonition-title">See</p>
<p class="last"><a class="reference internal" href="f.html#term-free-1"><em class="xref std std-term">free<sup>(1)</sup></em></a>.</p>
</div>
</dd>
<dt id="term-debugging-pool">debugging pool</dt>
<dd><div class="admonition-in-the-mps first last admonition">
<p class="first admonition-title">In the MPS</p>
<p class="last">A <a class="reference internal" href="p.html#term-pool"><em class="xref std std-term">pool</em></a> that performs extra checking in order to
find errors in the <a class="reference internal" href="c.html#term-client-program"><em class="xref std std-term">client program</em></a>. It uses
<a class="reference internal" href="f.html#term-fencepost"><em class="xref std std-term">fenceposts</em></a> to detect
<a class="reference internal" href="o.html#term-overwriting-error"><em class="xref std std-term">overwriting errors</em></a> and it
writes patterns over reclaimed blocks in order to detect
<a class="reference internal" href="p.html#term-premature-free"><em class="xref std std-term">use after free</em></a> or missing
references during <a class="reference internal" href="s.html#term-scan"><em class="xref std std-term">scanning</em></a>.</p>
</div>
</dd>
<dt id="term-deferred-coalescing">deferred coalescing</dt>
<dd><p class="first">Deferred coalescing is a policy which <a class="reference internal" href="c.html#term-coalesce"><em class="xref std std-term">coalesces</em></a>
<a class="reference internal" href="f.html#term-free-block"><em class="xref std std-term">free blocks</em></a> some time after the blocks are freed, as
opposed to coalescing free blocks immediately as they are
freed.</p>
<p>Adjacent free blocks can be coalesced to form larger free
blocks; deferred coalescing is a catch-all for policies which
perform this coalescing sometime after the blocks were freed.</p>
<p class="last">Given this rather flexible definition there are a number of
choices for when to coalesce: as the <a class="reference internal" href="f.html#term-free-list"><em class="xref std std-term">free list</em></a> is
traversed during allocation, when the allocation cannot be
satisfied from the free list, periodically, and so on. In
addition there are choices to be made regarding how much
coalescing to perform at any one time.</p>
</dd>
<dt id="term-deferred-reference-counting">deferred reference counting</dt>
<dd><p class="first">Deferred <a class="reference internal" href="r.html#term-reference-counting"><em class="xref std std-term">reference counting</em></a> reduces the cost of
maintaining reference counts by avoiding adjustments when the
<a class="reference internal" href="r.html#term-reference"><em class="xref std std-term">reference</em></a> is stored on the <a class="reference internal" href="s.html#term-stack"><em class="xref std std-term">stack</em></a>.</p>
<p>On many systems, the majority of stores are made into local
variables, which are kept on the stack. Deferred reference
counting leaves those out and counts only references stored in
<a class="reference internal" href="h.html#term-heap"><em class="xref std std-term">heap</em></a> objects. This requires compiler support, but can
lead to substantial performance improvements.</p>
<p><a class="reference internal" href="o.html#term-object"><em class="xref std std-term">Objects</em></a> cannot be <a class="reference internal" href="r.html#term-reclaim"><em class="xref std std-term">reclaimed</em></a> as soon
as their reference count becomes zero, because there might
still be references to them from the stack. Such objects are
added to a <a class="reference internal" href="z.html#term-zero-count-table"><em class="xref std std-term">zero count table</em></a> (ZCT) instead. If a
reference to an object with a count of zero is stored into the
heap, then the object is removed from the ZCT. Periodically
the stack is <a class="reference internal" href="s.html#term-scan"><em class="xref std std-term">scanned</em></a>, and any objects in the
ZCT which were not referenced from the stack are reclaimed.</p>
<p>Deferred reference counting has been used successfully with
several languages, notably <a class="reference internal" href="../mmref/lang.html#term-smalltalk"><em class="xref std std-term">Smalltalk</em></a>. However, since
it fails to collect objects with <a class="reference internal" href="c.html#term-cyclic-data-structure"><em class="xref std std-term">cyclic</em></a> references, it is often used alongside a
<a class="reference internal" href="t.html#term-tracing-garbage-collection"><em class="xref std std-term">tracing garbage collector</em></a>.</p>
<div class="admonition-related-publication last admonition">
<p class="first admonition-title">Related publication</p>
<p class="last"><a class="reference internal" href="../mmref/bib.html#db76"><em>Deutsch &amp; Bobrow (1976)</em></a>.</p>
</div>
</dd>
<dt id="term-dependent-object">dependent object</dt>
<dd><div class="admonition-in-the-mps first last admonition">
<p class="first admonition-title">In the MPS</p>
<p class="last">In <a class="reference internal" href="../pool/awl.html#pool-awl"><em>AWL (Automatic Weak Linked)</em></a>, each object in the pool can have a
<em>dependent object</em>. While scanning an object, the MPS
ensures that the dependent object is unprotected so that
it can be updated. This feature supports the
implementation of <a class="reference internal" href="w.html#term-weak-key-hash-table"><em class="xref std std-term">weak-key</em></a>
and <a class="reference internal" href="w.html#term-weak-value-hash-table"><em class="xref std std-term">weak-value hash tables</em></a>. See
<a class="reference internal" href="../pool/awl.html#pool-awl-dependent"><em>Dependent objects</em></a>.</p>
</div>
</dd>
<dt id="term-derived-pointer">derived pointer</dt>
<dd><div class="admonition-see first last admonition">
<p class="first admonition-title">See</p>
<p class="last"><a class="reference internal" href="i.html#term-interior-pointer"><em class="xref std std-term">interior pointer</em></a>.</p>
</div>
</dd>
<dt id="term-derived-type">derived type</dt>
<dd><div class="admonition-in-the-mps first last admonition">
<p class="first admonition-title">In the MPS</p>
<p class="last">In the MPS interface, a <em>derived type</em> is a type that is
neither an <a class="reference internal" href="o.html#term-opaque-type"><em class="xref std std-term">opaque type</em></a> nor a <a class="reference internal" href="t.html#term-transparent-type"><em class="xref std std-term">transparent
type</em></a>, but is instead a structure or function type based
on transparent and opaque types and on built-in C types.
See <a class="reference internal" href="../topic/interface.html#topic-interface"><em>Interface conventions</em></a>.</p>
</div>
</dd>
<dt id="term-destructor-1">destructor<sup>(1)</sup></dt>
<dd><p class="first">A destructor is a function or a method that performs the
explicit <a class="reference internal" href="f.html#term-free-1"><em class="xref std std-term">deallocation</em></a> of an <a class="reference internal" href="o.html#term-object"><em class="xref std std-term">object</em></a>.
It may also perform clean-up actions.</p>
<div class="admonition-opposite-term last admonition">
<p class="first admonition-title">Opposite term</p>
<p class="last"><a class="reference internal" href="c.html#term-constructor-1"><em class="xref std std-term">constructor<sup>(1)</sup></em></a>.</p>
</div>
</dd>
<dt id="term-destructor-2">destructor<sup>(2)</sup></dt>
<dd><p class="first">In <a class="reference internal" href="../mmref/lang.html#term-6"><em class="xref std std-term">C++</em></a>, a <em>destructor</em> is a member function that is
used to clean up when an object is being <a class="reference internal" href="f.html#term-free-1"><em class="xref std std-term">deallocated</em></a>.</p>
<p>When an object is being destroyed (by <tt class="docutils literal"><span class="pre">delete</span></tt> or
automatically), the appropriate destructor is called, and then
the actual deallocation of <a class="reference internal" href="m.html#term-memory-2"><em class="xref std std-term">memory<sup>(2)</sup></em></a> is performed by
<tt class="docutils literal"><span class="pre">operator</span> <span class="pre">delete</span></tt> or the run-time system (for <a class="reference internal" href="s.html#term-static-allocation"><em class="xref std std-term">static</em></a> and <a class="reference internal" href="s.html#term-stack-allocation"><em class="xref std std-term">stack allocation</em></a>).</p>
<div class="admonition-see-also last admonition seealso">
<p class="first admonition-title">See also</p>
<p class="last"><a class="reference internal" href="c.html#term-constructor-2"><em class="xref std std-term">constructor<sup>(2)</sup></em></a>.</p>
</div>
</dd>
<dt id="term-dgc">DGC</dt>
<dd><div class="admonition-see first last admonition">
<p class="first admonition-title">See</p>
<p class="last"><a class="reference internal" href="#term-distributed-garbage-collection"><em class="xref std std-term">distributed garbage collection</em></a>.</p>
</div>
</dd>
<dt id="term-direct-method">direct method</dt>
<dd><p class="first">Direct methods of <a class="reference internal" href="a.html#term-automatic-memory-management"><em class="xref std std-term">automatic memory management</em></a> maintain
information about the <a class="reference internal" href="l.html#term-live"><em class="xref std std-term">liveness</em></a> of each
<a class="reference internal" href="o.html#term-object"><em class="xref std std-term">object</em></a>, detecting <a class="reference internal" href="g.html#term-garbage"><em class="xref std std-term">garbage</em></a> directly.</p>
<p>Such bits of information, for example, <a class="reference internal" href="r.html#term-reference-counting"><em class="xref std std-term">reference counts</em></a>, are typically stored within the objects
themselves.</p>
<p>Direct <a class="reference internal" href="g.html#term-garbage-collection"><em class="xref std std-term">garbage collection</em></a> can allow <a class="reference internal" href="m.html#term-memory-2"><em class="xref std std-term">memory<sup>(2)</sup></em></a>
to be <a class="reference internal" href="r.html#term-reclaim"><em class="xref std std-term">reclaimed</em></a> as soon as it becomes
<a class="reference internal" href="u.html#term-unreachable"><em class="xref std std-term">unreachable</em></a>. However, the stored information must be
updated as the <a class="reference internal" href="g.html#term-graph"><em class="xref std std-term">graph</em></a> of objects changes; this may be
an expensive operation, especially in <a class="reference internal" href="#term-distributed-garbage-collection"><em class="xref std std-term">distributed
garbage collection</em></a> where it can lead to intensive
communication between processors, and make garbage collection
less robust to network failures.</p>
<div class="admonition-opposite-term admonition">
<p class="first admonition-title">Opposite term</p>
<p class="last"><a class="reference internal" href="i.html#term-indirect-method"><em class="xref std std-term">indirect method</em></a>.</p>
</div>
<div class="admonition-related-publication last admonition">
<p class="first admonition-title">Related publication</p>
<p class="last"><a class="reference internal" href="../mmref/bib.html#jones12"><em>Jones et al. (2012)</em></a>.</p>
</div>
</dd>
<dt id="term-dirty-bit">dirty bit</dt>
<dd><p class="first">A dirty bit is a flag indicating that a <a class="reference internal" href="p.html#term-page"><em class="xref std std-term">page</em></a> (or
similar) has been written to since it was last examined.</p>
<p class="last">Dirty bits are used by <a class="reference internal" href="c.html#term-cache-2"><em class="xref std std-term">cache<sup>(2)</sup></em></a> to determine which
pages must be written out, and by garbage collectors in
conjunction with <a class="reference internal" href="w.html#term-write-barrier"><em class="xref std std-term">write barriers</em></a>.</p>
</dd>
<dt id="term-distributed-garbage-collection">distributed garbage collection</dt>
<dd><div class="admonition-also-known-as first admonition">
<p class="first admonition-title">Also known as</p>
<p class="last"><em>DGC</em>.</p>
</div>
<p>Distributed garbage collection is <a class="reference internal" href="g.html#term-garbage-collection"><em class="xref std std-term">garbage collection</em></a>
in a system where <a class="reference internal" href="o.html#term-object"><em class="xref std std-term">objects</em></a> might not reside in the same
<a class="reference internal" href="a.html#term-address-space"><em class="xref std std-term">address space</em></a> or even on the same machine.</p>
<p class="last">Distributed garbage collection is difficult to achieve in
widely-distributed systems (over wide-area networks) because
of the costs of synchronization and communication between
processes. These costs are particularly high for a
<a class="reference internal" href="t.html#term-tracing-garbage-collection"><em class="xref std std-term">tracing garbage collector</em></a>, so other techniques, including <a class="reference internal" href="w.html#term-weighted-reference-counting"><em class="xref std std-term">weighted
reference counting</em></a>, are commonly used instead.</p>
</dd>
<dt id="term-double-buddies">double buddies</dt>
<dd><p class="first">A <a class="reference internal" href="b.html#term-buddy-system"><em class="xref std std-term">buddy system</em></a> <a class="reference internal" href="a.html#term-allocation-mechanism"><em class="xref std std-term">allocation mechanism</em></a> using a
pair of <a class="reference internal" href="b.html#term-binary-buddies"><em class="xref std std-term">binary buddy</em></a> systems with
staggered size classes.</p>
<p>One system is a pure binary buddy, with powers-of-two classes
(2, 4, 8, …). The other uses some fixed multiple of
powers-of-two (for example, 3, 6, 12, …). This resembles
<a class="reference internal" href="w.html#term-weighted-buddies"><em class="xref std std-term">weighted buddies</em></a>, but the two buddy systems are
treated independently: blocks cannot be <a class="reference internal" href="s.html#term-split"><em class="xref std std-term">split</em></a> or
<a class="reference internal" href="c.html#term-coalesce"><em class="xref std std-term">coalesced</em></a> from one to the other.</p>
<div class="admonition-related-publication last admonition">
<p class="first admonition-title">Related publication</p>
<p class="last"><a class="reference internal" href="../mmref/bib.html#wise78"><em>Wise (1978)</em></a>.</p>
</div>
</dd>
<dt id="term-double-free">double free</dt>
<dd><p class="first">A double free is when an attempt is made to <a class="reference internal" href="f.html#term-free-1"><em class="xref std std-term">free<sup>(1)</sup></em></a> a
<a class="reference internal" href="m.html#term-memory-2"><em class="xref std std-term">memory<sup>(2)</sup></em></a> <a class="reference internal" href="b.html#term-block"><em class="xref std std-term">block</em></a> that has already been freed.</p>
<p>This usually occurs in <a class="reference internal" href="m.html#term-manual-memory-management"><em class="xref std std-term">manual memory management</em></a> when
two parts of a program believe they are responsible for the
management of the same block.</p>
<p>Many manual <a class="reference internal" href="m.html#term-memory-manager"><em class="xref std std-term">memory managers</em></a> have great trouble with
double frees, because they cannot cheaply determine that
<a class="reference internal" href="f.html#term-free-1"><em class="xref std std-term">deallocated</em></a> blocks were already free.
Instead, they corrupt their <a class="reference internal" href="f.html#term-free-block-chain"><em class="xref std std-term">free block chain</em></a>, which
leads to mysterious problems when the same block is
subsequently <a class="reference internal" href="a.html#term-allocate"><em class="xref std std-term">allocated</em></a>.</p>
<div class="admonition-see-also last admonition seealso">
<p class="first admonition-title">See also</p>
<p class="last"><a class="reference internal" href="p.html#term-premature-free"><em class="xref std std-term">premature free</em></a>.</p>
</div>
</dd>
<dt id="term-doubleword">doubleword</dt>
<dd><div class="admonition-also-known-as first admonition">
<p class="first admonition-title">Also known as</p>
<p class="last"><em>longword</em>.</p>
</div>
<p>A <em>doubleword</em> is a unit of memory consisting of two adjacent
<a class="reference internal" href="w.html#term-word"><em class="xref std std-term">words</em></a>.</p>
<div class="admonition-historical-note admonition">
<p class="first admonition-title">Historical note</p>
<p class="last">On the Intel 80386, 80486, and Pentium processors, the
doubleword of 32 bits is actually the <em>natural word size</em>,
but the term <em>word</em> is still used for the 16-bit unit, as
it was on earlier processors of this series.</p>
</div>
<div class="admonition-see-also last admonition seealso">
<p class="first admonition-title">See also</p>
<p class="last"><a class="reference internal" href="q.html#term-quadword"><em class="xref std std-term">quadword</em></a>.</p>
</div>
</dd>
<dt id="term-doubly-weak-hash-table">doubly weak hash table</dt>
<dd>A hash table that is both <a class="reference internal" href="w.html#term-weak-key-hash-table"><em class="xref std std-term">weak-key</em></a> and <a class="reference internal" href="w.html#term-weak-value-hash-table"><em class="xref std std-term">weak-value</em></a>.</dd>
<dt id="term-dram">DRAM</dt>
<dd><div class="admonition-see first last admonition">
<p class="first admonition-title">See</p>
<p class="last"><a class="reference internal" href="#term-dynamic-memory"><em class="xref std std-term">dynamic memory</em></a>.</p>
</div>
</dd>
<dt id="term-dynamic-allocation">dynamic allocation</dt>
<dd><div class="admonition-see first last admonition">
<p class="first admonition-title">See</p>
<p class="last"><a class="reference internal" href="h.html#term-heap-allocation"><em class="xref std std-term">heap allocation</em></a>.</p>
</div>
</dd>
<dt id="term-dynamic-extent">dynamic extent</dt>
<dd><p class="first">An <a class="reference internal" href="o.html#term-object"><em class="xref std std-term">object</em></a> has <em>dynamic extent</em> if its <a class="reference internal" href="l.html#term-lifetime"><em class="xref std std-term">lifetime</em></a>
is bounded by the execution of a function or some other block
construct.</p>
<p>Objects of dynamic extent are usually <a class="reference internal" href="s.html#term-stack-allocation"><em class="xref std std-term">stack-allocated</em></a>.</p>
<div class="admonition-similar-term admonition">
<p class="first admonition-title">Similar term</p>
<p class="last"><a class="reference internal" href="a.html#term-automatic-storage-duration"><em class="xref std std-term">automatic storage duration</em></a>.</p>
</div>
<div class="admonition-opposite-term last admonition">
<p class="first admonition-title">Opposite term</p>
<p class="last"><a class="reference internal" href="i.html#term-indefinite-extent"><em class="xref std std-term">indefinite extent</em></a>.</p>
</div>
</dd>
<dt id="term-dynamic-memory">dynamic memory</dt>
<dd><div class="admonition-also-known-as first admonition">
<p class="first admonition-title">Also known as</p>
<p class="last"><em>dynamic RAM</em>, <em>DRAM</em>.</p>
</div>
<p>Dynamic memory, or dynamic RAM (DRAM, pronounced &#8220;dee ram&#8221;),
is a type of <a class="reference internal" href="r.html#term-ram"><em class="xref std std-term">RAM</em></a>.</p>
<p>Dynamic memory requires periodic refreshing to avoid losing
its contents (as opposed to <a class="reference internal" href="s.html#term-static-memory-1"><em class="xref std std-term">static memory<sup>(1)</sup></em></a>, the
contents of which are preserved without any need for
refreshing). The refreshing is performed by additional
&#8220;refresh hardware&#8221; usually external to the dynamic memory
package itself, sometimes by the main CPU. Dynamic memory is
cheap and compact and is the choice for large amounts of
relatively fast memory, such as the <a class="reference internal" href="m.html#term-main-memory"><em class="xref std std-term">main memory</em></a> of
PCs. Dynamic memory often comes packaged in SIMMs or DIMMs.</p>
<div class="admonition-see-also last admonition seealso">
<p class="first admonition-title">See also</p>
<p class="last"><a class="reference internal" href="s.html#term-static-memory-1"><em class="xref std std-term">static memory<sup>(1)</sup></em></a>, <a class="reference internal" href="s.html#term-sdram"><em class="xref std std-term">SDRAM</em></a>.</p>
</div>
</dd>
<dt id="term-dynamic-ram">dynamic RAM</dt>
<dd><div class="admonition-see first last admonition">
<p class="first admonition-title">See</p>
<p class="last"><a class="reference internal" href="#term-dynamic-memory"><em class="xref std std-term">dynamic memory</em></a>.</p>
</div>
</dd>
</dl>
</div>
</div>
</div>
</div>
<div class="sphinxsidebar">
<div class="sphinxsidebarwrapper">
<p class="logo"><a href="../index.html">
<img class="logo" src="../_static/logo.png" alt="Logo"/>
</a></p>
<h4>Previous topic</h4>
<p class="topless"><a href="c.html"
title="previous chapter">Memory Management Glossary: C</a></p>
<h4>Next topic</h4>
<p class="topless"><a href="e.html"
title="next chapter">Memory Management Glossary: E</a></p><h4>Downloads</h4>
<p class="topless">
<a href="http://www.ravenbrook.com/project/mps/release/1.111.0/">MPS Kit release 1.111.0</a><br>
<a href="http://www.ravenbrook.com/project/mps/release/">All MPS Kit releases</a>
</p>
<h4>Issues</h4>
<p class="topless">
<a href="http://www.ravenbrook.com/project/mps/issue/?action=list&amp;view=status%3dopen&amp;display=Job:Priority:Title&amp;sort=Priority">Known issues</a><br>
<a href="http://www.ravenbrook.com/project/mps/issue/?action=fixed&release_fixed=1.111.0">Issues fixed in release 1.111.0</a>
</p><h4>Contact us</h4>
<p class="topless"><a href="mailto:mps-questions@ravenbrook.com">mps-questions@ravenbrook.com</a></p>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="General Index"
>index</a></li>
<li class="right" >
<a href="e.html" title="Memory Management Glossary: E"
>next</a> |</li>
<li class="right" >
<a href="c.html" title="Memory Management Glossary: C"
>previous</a> |</li>
<li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> &raquo;</li>
<li><a href="index.html" >Memory Management Glossary</a> &raquo;</li>
</ul>
</div>
<div class="footer">
&copy; <a href="../copyright.html">Copyright</a> 2013, Ravenbrook Limited.
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
</div>
</body>
</html>