mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-01-17 00:30:37 -08:00
456 lines
No EOL
34 KiB
HTML
456 lines
No EOL
34 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: W — 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: Z" href="z.html" />
|
|
<link rel="prev" title="Memory Management Glossary: V" href="v.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="z.html" title="Memory Management Glossary: Z"
|
|
accesskey="N">next</a> |</li>
|
|
<li class="right" >
|
|
<a href="v.html" title="Memory Management Glossary: V"
|
|
accesskey="P">previous</a> |</li>
|
|
<li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> »</li>
|
|
<li><a href="index.html" accesskey="U">Memory Management Glossary</a> »</li>
|
|
</ul>
|
|
</div>
|
|
|
|
<div class="document">
|
|
<div class="documentwrapper">
|
|
<div class="bodywrapper">
|
|
<div class="body">
|
|
|
|
<div class="section" id="memory-management-glossary-w">
|
|
<span id="glossary-w"></span><h1>Memory Management Glossary: W<a class="headerlink" href="#memory-management-glossary-w" 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="d.html#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="#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-weak-key-hash-table">weak-key hash table</dt>
|
|
<dd><p class="first">A hash table which has <a class="reference internal" href="#term-weak-reference-1"><em class="xref std std-term">weak references<sup>(1)</sup></em></a> to its
|
|
keys. If the key dies, the value for that key is automatically
|
|
deleted from the table too. It can be used to store extra
|
|
information about objects without keeping them alive.</p>
|
|
<div class="admonition-similar-term admonition">
|
|
<p class="first admonition-title">Similar terms</p>
|
|
<p class="last"><a class="reference internal" href="d.html#term-doubly-weak-hash-table"><em class="xref std std-term">doubly weak hash table</em></a>, <a class="reference internal" href="#term-weak-value-hash-table"><em class="xref std std-term">weak-value hash table</em></a>.</p>
|
|
</div>
|
|
<div class="admonition-in-the-mps last admonition">
|
|
<p class="first admonition-title">In the MPS</p>
|
|
<p class="last">See <a class="reference internal" href="../pool/awl.html#pool-awl"><em>AWL (Automatic Weak Linked)</em></a>.</p>
|
|
</div>
|
|
</dd>
|
|
<dt id="term-weak-value-hash-table">weak-value hash table</dt>
|
|
<dd><p class="first">A hash table which has <a class="reference internal" href="#term-weak-reference-1"><em class="xref std std-term">weak references<sup>(1)</sup></em></a> to its
|
|
value. If the value dies, any keys that refer to that value
|
|
are automatically deleted from the table too. It can be used
|
|
to index a set of objects without keeping them alive.</p>
|
|
<div class="admonition-similar-term admonition">
|
|
<p class="first admonition-title">Similar terms</p>
|
|
<p class="last"><a class="reference internal" href="d.html#term-doubly-weak-hash-table"><em class="xref std std-term">doubly weak hash table</em></a>, <a class="reference internal" href="#term-weak-key-hash-table"><em class="xref std std-term">weak-key hash table</em></a>.</p>
|
|
</div>
|
|
<div class="admonition-in-the-mps last admonition">
|
|
<p class="first admonition-title">In the MPS</p>
|
|
<p class="last">See <a class="reference internal" href="../pool/awl.html#pool-awl"><em>AWL (Automatic Weak Linked)</em></a>.</p>
|
|
</div>
|
|
</dd>
|
|
<dt id="term-weak-hash-table">weak hash table</dt>
|
|
<dd>A <a class="reference internal" href="#term-weak-key-hash-table"><em class="xref std std-term">weak-key</em></a> or <a class="reference internal" href="#term-weak-value-hash-table"><em class="xref std std-term">weak-value
|
|
hash table</em></a> (usually the former).</dd>
|
|
<dt id="term-weak-reference-1">weak reference<sup>(1)</sup></dt>
|
|
<dd><p class="first">In <a class="reference internal" href="t.html#term-tracing-garbage-collection"><em class="xref std std-term">tracing garbage collection</em></a>, a weak reference is a
|
|
<a class="reference internal" href="r.html#term-reference"><em class="xref std std-term">reference</em></a> that does not keep the <a class="reference internal" href="o.html#term-object"><em class="xref std std-term">object</em></a> it
|
|
refers to <a class="reference internal" href="l.html#term-live"><em class="xref std std-term">alive</em></a>.</p>
|
|
<p>A weak reference does not keep the referent alive, but it will
|
|
continue to refer to the object as long as it remains
|
|
otherwise alive. When only weak references to the object
|
|
remain, the weak references can be deleted (“splatted” or
|
|
“cleared”) and the object <a class="reference internal" href="r.html#term-reclaim"><em class="xref std std-term">reclaimed</em></a>.</p>
|
|
<p><a class="reference internal" href="../mmref/lang.html#term-java"><em class="xref std std-term">Java</em></a> offers three kinds of weak references, called
|
|
<a class="reference internal" href="s.html#term-soft-reference"><em class="xref std std-term">soft references</em></a>, <a class="reference internal" href="#term-weak-reference-2"><em class="xref std std-term">weak references<sup>(2)</sup></em></a>, and
|
|
<a class="reference internal" href="p.html#term-phantom-reference"><em class="xref std std-term">phantom references</em></a>, in order of increasing weakness.</p>
|
|
<div class="admonition-opposite-term admonition">
|
|
<p class="first admonition-title">Opposite term</p>
|
|
<p class="last"><a class="reference internal" href="s.html#term-strong-reference"><em class="xref std std-term">strong reference</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="#term-weak-root"><em class="xref std std-term">weak root</em></a>.</p>
|
|
</div>
|
|
</dd>
|
|
<dt id="term-weak-reference-2">weak reference<sup>(2)</sup></dt>
|
|
<dd><p class="first">In <a class="reference internal" href="../mmref/lang.html#term-java"><em class="xref std std-term">Java</em></a> terminology, <em>weak reference</em> is used to mean
|
|
a <a class="reference internal" href="r.html#term-reference"><em class="xref std std-term">reference</em></a> encapsulated in a <a class="reference internal" href="r.html#term-reference-object"><em class="xref std std-term">reference object</em></a>
|
|
of class <tt class="docutils literal"><span class="pre">WeakReference</span></tt>.</p>
|
|
<p>Weak references form one of three kinds of <a class="reference internal" href="#term-weak-reference-1"><em class="xref std std-term">weak
|
|
reference<sup>(1)</sup></em></a> in Java. They are handy for associating extra
|
|
data with objects when you cannot store it in the objects
|
|
themselves.</p>
|
|
<div class="admonition-see-also admonition seealso">
|
|
<p class="first admonition-title">See also</p>
|
|
<p class="last"><a class="reference internal" href="#term-weakly-reachable"><em class="xref std std-term">weakly reachable</em></a>.</p>
|
|
</div>
|
|
<div class="admonition-related-link last admonition">
|
|
<p class="first admonition-title">Related links</p>
|
|
<p class="last"><a class="reference external" href="http://download.java.net/jdk8/docs/api/java/lang/ref/WeakReference.html">Class java.lang.ref.WeakReference</a>, <a class="reference external" href="http://pawlan.com/monica/articles/refobjs/">Reference Objects and Garbage Collection</a>.</p>
|
|
</div>
|
|
</dd>
|
|
<dt id="term-weak-root">weak root</dt>
|
|
<dd><p class="first">A weak root is a <a class="reference internal" href="r.html#term-root"><em class="xref std std-term">root</em></a>, such that all
|
|
<a class="reference internal" href="r.html#term-reference"><em class="xref std std-term">references</em></a> in it are <a class="reference internal" href="#term-weak-reference-1"><em class="xref std std-term">weak references<sup>(1)</sup></em></a>; that
|
|
is, they do not affect the <a class="reference internal" href="l.html#term-live"><em class="xref std std-term">liveness</em></a> of the
|
|
<a class="reference internal" href="o.html#term-object"><em class="xref std std-term">objects</em></a> referred to.</p>
|
|
<div class="admonition-opposite-term admonition">
|
|
<p class="first admonition-title">Opposite term</p>
|
|
<p class="last"><a class="reference internal" href="s.html#term-strong-root"><em class="xref std std-term">strong root</em></a>.</p>
|
|
</div>
|
|
<div class="admonition-in-the-mps last admonition">
|
|
<p class="first admonition-title">In the MPS</p>
|
|
<p class="last">A weak root has <a class="reference internal" href="r.html#term-rank"><em class="xref std std-term">rank</em></a> <a class="reference internal" href="../topic/root.html#mps_rank_weak" title="mps_rank_weak"><tt class="xref c c-func docutils literal"><span class="pre">mps_rank_weak()</span></tt></a>.</p>
|
|
</div>
|
|
</dd>
|
|
<dt id="term-weak-tri-color-invariant"><span id="term-weak-tri-colour-invariant"></span><span id="term-weak-tricolor-invariant"></span><span id="term-weak-tricolour-invariant"></span>weak tri-color invariant<br />weak tri-colour invariant<br />weak tricolor invariant<br />weak tricolour invariant</dt>
|
|
<dd><p class="first">The weak <a class="reference internal" href="t.html#term-tri-color-invariant"><em class="xref std std-term">tri-color invariant</em></a> is the property of a
|
|
<a class="reference internal" href="r.html#term-reference"><em class="xref std std-term">reference</em></a> <a class="reference internal" href="g.html#term-graph"><em class="xref std std-term">graph</em></a> that all <a class="reference internal" href="#term-white"><em class="xref std std-term">white</em></a>
|
|
<a class="reference internal" href="n.html#term-node"><em class="xref std std-term">nodes</em></a> pointed to by a <a class="reference internal" href="b.html#term-black"><em class="xref std std-term">black</em></a> node are
|
|
also <a class="reference internal" href="r.html#term-reachable"><em class="xref std std-term">reachable</em></a> from some <a class="reference internal" href="g.html#term-gray"><em class="xref std std-term">gray</em></a> node through a
|
|
chain of white nodes.</p>
|
|
<p>By preserving this property throughout <a class="reference internal" href="t.html#term-tri-color-marking"><em class="xref std std-term">tri-color
|
|
marking</em></a>, a <a class="reference internal" href="t.html#term-trace"><em class="xref std std-term">tracing</em></a> algorithm can ensure that
|
|
the <a class="reference internal" href="c.html#term-collector-2"><em class="xref std std-term">collector<sup>(2)</sup></em></a> will not miss reachable objects,
|
|
even if the <a class="reference internal" href="m.html#term-mutator"><em class="xref std std-term">mutator</em></a> manipulates the graph during the
|
|
collection. Mutator actions might need to change the
|
|
<a class="reference internal" href="c.html#term-color"><em class="xref std std-term">color</em></a> of the nodes affected in order to preserve the
|
|
invariant.</p>
|
|
<p>Algorithms using this invariant are
|
|
<a class="reference internal" href="s.html#term-snapshot-at-the-beginning"><em class="xref std std-term">snapshot-at-the-beginning</em></a>
|
|
algorithms.</p>
|
|
<div class="admonition-see-also admonition seealso">
|
|
<p class="first admonition-title">See also</p>
|
|
<p class="last"><a class="reference internal" href="b.html#term-barrier-1"><em class="xref std std-term">barrier<sup>(1)</sup></em></a>, <a class="reference internal" href="s.html#term-strong-tri-color-invariant"><em class="xref std std-term">strong tri-color invariant</em></a>.</p>
|
|
</div>
|
|
<div class="admonition-related-publication last admonition">
|
|
<p class="first admonition-title">Related publications</p>
|
|
<p class="last"><a class="reference internal" href="../mmref/bib.html#johnstone97"><em>Johnstone (1997)</em></a>, <a class="reference internal" href="../mmref/bib.html#pirinen98"><em>Pirinen (1998)</em></a>.</p>
|
|
</div>
|
|
</dd>
|
|
<dt id="term-weakly-reachable">weakly reachable</dt>
|
|
<dd><p class="first">In <a class="reference internal" href="../mmref/lang.html#term-java"><em class="xref std std-term">Java</em></a>, an object is <em>weakly reachable</em> if it is
|
|
neither <a class="reference internal" href="s.html#term-strongly-reachable"><em class="xref std std-term">strongly</em></a> nor
|
|
<a class="reference internal" href="s.html#term-softly-reachable"><em class="xref std std-term">softly reachable</em></a> and there is a path from the
|
|
<a class="reference internal" href="r.html#term-root"><em class="xref std std-term">roots</em></a> to it that contains at least one
|
|
<a class="reference internal" href="#term-weak-reference-2"><em class="xref std std-term">weak reference<sup>(2)</sup></em></a> but no <a class="reference internal" href="p.html#term-phantom-reference"><em class="xref std std-term">phantom references</em></a>.</p>
|
|
<p>When the Java <a class="reference internal" href="c.html#term-collector-1"><em class="xref std std-term">collector<sup>(1)</sup></em></a> determines that an object
|
|
is weakly reachable, it clears all the weak references
|
|
involved, and declares the object <a class="reference internal" href="f.html#term-finalization"><em class="xref std std-term">finalizable</em></a>. (Operationally, finalization works as if it
|
|
was implemented by a class of “final references” that stand
|
|
between weak and phantom references.) Also, the
|
|
<a class="reference internal" href="r.html#term-reference-object"><em class="xref std std-term">reference objects</em></a> containing the
|
|
weak references are enqueued, if they were registered with a
|
|
queue.</p>
|
|
<div class="admonition-see-also admonition seealso">
|
|
<p class="first admonition-title">See also</p>
|
|
<p class="last"><a class="reference internal" href="r.html#term-reachable"><em class="xref std std-term">reachability</em></a>, <a class="reference internal" href="p.html#term-phantom-reachable"><em class="xref std std-term">phantom reachable</em></a>.</p>
|
|
</div>
|
|
<div class="admonition-related-link last admonition">
|
|
<p class="first admonition-title">Related link</p>
|
|
<p class="last"><a class="reference external" href="http://download.java.net/jdk8/docs/api/java/lang/ref/WeakReference.html">Class java.lang.ref.WeakReference</a>, <a class="reference external" href="http://pawlan.com/monica/articles/refobjs/">Reference Objects and Garbage Collection</a>.</p>
|
|
</div>
|
|
</dd>
|
|
<dt id="term-weighted-buddies">weighted 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 two
|
|
series of size classes: <a class="reference internal" href="b.html#term-binary-buddies"><em class="xref std std-term">binary buddies</em></a> (2, 4, 8, …)
|
|
and three-times-power-of-two (3, 6, 12, …). A block that is
|
|
in the latter series may be <a class="reference internal" href="s.html#term-split"><em class="xref std std-term">split</em></a> in two different
|
|
ways. Thus a block of size 12 may be split into two blocks of
|
|
size 6 or one block of size 4 and one block of size 8. The
|
|
same applies for <a class="reference internal" href="c.html#term-coalesce"><em class="xref std std-term">coalescing</em></a>. This gives
|
|
this system more flexibility than a regular buddy system.</p>
|
|
<div class="admonition-see-also admonition seealso">
|
|
<p class="first admonition-title">See also</p>
|
|
<p class="last"><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>, <a class="reference internal" href="b.html#term-binary-buddies"><em class="xref std std-term">binary buddies</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#wil95"><em>Wilson et al. (1995)</em></a>.</p>
|
|
</div>
|
|
</dd>
|
|
<dt id="term-weighted-reference-counting">weighted reference counting</dt>
|
|
<dd><p class="first">A technique for <a class="reference internal" href="r.html#term-reference-counting"><em class="xref std std-term">reference counting</em></a> which is in common
|
|
use for <a class="reference internal" href="d.html#term-distributed-garbage-collection"><em class="xref std std-term">distributed garbage collection</em></a> because of the
|
|
low level of inter-process communication it requires.</p>
|
|
<p class="last">Inter-process <a class="reference internal" href="r.html#term-reference"><em class="xref std std-term">references</em></a> to <a class="reference internal" href="o.html#term-object"><em class="xref std std-term">objects</em></a> are
|
|
counted, but instead of simply counting the number of
|
|
references, each reference is given a weight. When an object
|
|
is created, the initial pointer to it is assigned a weight,
|
|
which is usually a power of 2 for easy division. The object
|
|
records the sum of all the weights of all of its references.
|
|
Whenever a reference is copied, its weight is divided equally
|
|
between the new and original copies. Since this operation
|
|
preserves the weighted reference sum, there is no need for
|
|
communication with the object at this time. When a reference
|
|
is deleted, the weighted reference sum is decremented by the
|
|
weight of the reference. This is communicated to the object by
|
|
sending it a message. When the object detects that the
|
|
weighted reference sum has dropped to zero, it may be
|
|
<a class="reference internal" href="r.html#term-reclaim"><em class="xref std std-term">reclaimed</em></a>. The algorithm is tolerant of communication
|
|
protocols which don’t guarantee order of arrival of deletion
|
|
messages.</p>
|
|
</dd>
|
|
<dt id="term-white">white</dt>
|
|
<dd><p class="first">In a <a class="reference internal" href="t.html#term-tri-color-marking"><em class="xref std std-term">tri-color marking</em></a> scheme, white <a class="reference internal" href="o.html#term-object"><em class="xref std std-term">objects</em></a>
|
|
are objects that were <a class="reference internal" href="c.html#term-condemned-set"><em class="xref std std-term">condemned</em></a> at the
|
|
beginning of the <a class="reference internal" href="c.html#term-collection-cycle"><em class="xref std std-term">collection cycle</em></a> and have not been
|
|
shown to be <a class="reference internal" href="r.html#term-reachable"><em class="xref std std-term">reachable</em></a>. When <a class="reference internal" href="t.html#term-trace"><em class="xref std std-term">tracing</em></a> is
|
|
complete, white objects will be subject to <a class="reference internal" href="r.html#term-reclaim"><em class="xref std std-term">reclamation</em></a>.</p>
|
|
<div class="admonition-opposite-term last admonition">
|
|
<p class="first admonition-title">Opposite terms</p>
|
|
<p class="last"><a class="reference internal" href="g.html#term-gray"><em class="xref std std-term">gray</em></a>, <a class="reference internal" href="b.html#term-black"><em class="xref std std-term">black</em></a>.</p>
|
|
</div>
|
|
</dd>
|
|
<dt id="term-word">word</dt>
|
|
<dd><div class="admonition-also-known-as first admonition">
|
|
<p class="first admonition-title">Also known as</p>
|
|
<p class="last"><em>machine word</em>.</p>
|
|
</div>
|
|
<p>Almost all processor architectures have a characteristic data
|
|
size that is handled most efficiently. This is known as the
|
|
<em>word size</em>, and data of that size are known as <em>words</em>. The
|
|
word size is usually a power of two multiple of <a class="reference internal" href="b.html#term-byte-2"><em class="xref std std-term">bytes<sup>(2)</sup></em></a>.</p>
|
|
<p>Often the platform’s word size is used to characterize the
|
|
architecture by quoting the number of bits in it. For example,
|
|
a 32-bit platform has a word size of four bytes and a 64-bit
|
|
platform has eight-byte words (assuming 8-bit bytes).
|
|
Typically, <a class="reference internal" href="p.html#term-pointer"><em class="xref std std-term">pointers</em></a> are the size of a word,
|
|
and traditionally this determined the word size. Nowadays,
|
|
word size is usually driven by the need for more accuracy and
|
|
range in mathematical calculations.</p>
|
|
<div class="admonition-historical-note admonition">
|
|
<p class="first admonition-title">Historical note</p>
|
|
<p class="last">In the past, the convenience of dealing with powers of two was not as significant, and word sizes such as 36- or 72-bits were not unknown.</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="a.html#term-alignment"><em class="xref std std-term">alignment</em></a>, <a class="reference internal" href="g.html#term-grain"><em class="xref std std-term">grain</em></a>.</p>
|
|
</div>
|
|
</dd>
|
|
<dt id="term-working-set">working set</dt>
|
|
<dd><p class="first">The working set of a program or system is that <a class="reference internal" href="m.html#term-memory-2"><em class="xref std std-term">memory<sup>(2)</sup></em></a> or set of <a class="reference internal" href="a.html#term-address"><em class="xref std std-term">addresses</em></a> which it will use
|
|
in the near future.</p>
|
|
<p>This term is generally used when discussing <a class="reference internal" href="m.html#term-miss-rate"><em class="xref std std-term">miss rates</em></a>
|
|
at some <a class="reference internal" href="s.html#term-storage-level"><em class="xref std std-term">storage level</em></a>; the time scale of “near future”
|
|
depends upon the cost of a <a class="reference internal" href="m.html#term-miss"><em class="xref std std-term">miss</em></a>. The working set
|
|
should fit in the storage level; otherwise the system may
|
|
<a class="reference internal" href="t.html#term-thrash"><em class="xref std std-term">thrash</em></a>.</p>
|
|
<div class="admonition-see-also admonition seealso">
|
|
<p class="first admonition-title">See also</p>
|
|
<p class="last"><a class="reference internal" href="r.html#term-resident-set"><em class="xref std std-term">resident set</em></a>, <a class="reference internal" href="c.html#term-cache-2"><em class="xref std std-term">cache<sup>(2)</sup></em></a>, <a class="reference internal" href="s.html#term-storage-hierarchy"><em class="xref std std-term">storage hierarchy</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#ds72"><em>Denning & Schwartz (1972)</em></a>.</p>
|
|
</div>
|
|
</dd>
|
|
<dt id="term-worst-fit">worst fit</dt>
|
|
<dd><p class="first">The <a class="reference internal" href="a.html#term-allocation-policy"><em class="xref std std-term">allocation policy</em></a> that always allocates from the
|
|
largest <a class="reference internal" href="f.html#term-free-block"><em class="xref std std-term">free block</em></a>. Commonly implemented using a
|
|
size-ordered <a class="reference internal" href="f.html#term-free-block-chain"><em class="xref std std-term">free block chain</em></a> (largest first).</p>
|
|
<p>In practice, this tends to work quite badly because it
|
|
eliminates all large blocks, so large requests cannot be met.</p>
|
|
<div class="admonition-see-also admonition seealso">
|
|
<p class="first admonition-title">See also</p>
|
|
<p class="last"><a class="reference internal" href="a.html#term-allocation-policy"><em class="xref std std-term">allocation policy</em></a>, <a class="reference internal" href="f.html#term-first-fit"><em class="xref std std-term">first fit</em></a>, <a class="reference internal" href="b.html#term-best-fit"><em class="xref std std-term">best fit</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#wil95"><em>Wilson et al. (1995)</em></a>.</p>
|
|
</div>
|
|
</dd>
|
|
<dt id="term-wrapped">wrapped</dt>
|
|
<dd><p class="first">A value is wrapped if it is encoded with type information.</p>
|
|
<div class="admonition-opposite-term admonition">
|
|
<p class="first admonition-title">Opposite term</p>
|
|
<p class="last"><a class="reference internal" href="u.html#term-unwrapped"><em class="xref std std-term">unwrapped</em></a>.</p>
|
|
</div>
|
|
<div class="admonition-see-also admonition seealso">
|
|
<p class="first admonition-title">See also</p>
|
|
<p class="last"><a class="reference internal" href="#term-wrapper"><em class="xref std std-term">wrapper</em></a>, <a class="reference internal" href="b.html#term-boxed"><em class="xref std std-term">boxed</em></a>, <a class="reference internal" href="t.html#term-tag"><em class="xref std std-term">tag</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#gudeman93"><em>Gudeman (1993)</em></a>.</p>
|
|
</div>
|
|
</dd>
|
|
<dt id="term-wrapper">wrapper</dt>
|
|
<dd><p class="first">A wrapper is that part of a <a class="reference internal" href="#term-wrapped"><em class="xref std std-term">wrapped</em></a> representation
|
|
that is copied when the value is passed by value.</p>
|
|
<p>The wrapper does not include parts of the representation that
|
|
are accessed indirectly, and are not copied when the value is
|
|
passed.</p>
|
|
<p>For instance, a <a class="reference internal" href="../mmref/lang.html#term-lisp"><em class="xref std std-term">Lisp</em></a> implementation might use the top
|
|
two bits of a value representation as a <a class="reference internal" href="t.html#term-tag"><em class="xref std std-term">tag</em></a> to
|
|
distinguish between integers and <a class="reference internal" href="c.html#term-cons-1"><em class="xref std std-term">cons<sup>(1)</sup></em></a> cells,
|
|
setting these bits to 01 for a <a class="reference internal" href="p.html#term-pointer"><em class="xref std std-term">pointer</em></a> to a cons cell
|
|
and 11 for an integer. Then the wrapped value of the number 4
|
|
would have binary representation 11000…00100, and the
|
|
wrapper for this number is the whole of this wrapped value.
|
|
The pointer to a cons cell stored at location 4 would have
|
|
binary representation 01000…00100. The wrapped value of the
|
|
cons cell is the combination of this pointer and the cons cell
|
|
in memory itself. The wrapper of the cons cell is just the
|
|
pointer; when the cons cell is passed as a function argument,
|
|
just the pointer is passed.</p>
|
|
<div class="admonition-see-also admonition seealso">
|
|
<p class="first admonition-title">See also</p>
|
|
<p class="last"><a class="reference internal" href="#term-wrapped"><em class="xref std std-term">wrapped</em></a>, <a class="reference internal" href="b.html#term-boxed"><em class="xref std std-term">boxed</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#gudeman93"><em>Gudeman (1993)</em></a>.</p>
|
|
</div>
|
|
</dd>
|
|
<dt id="term-write-barrier">write barrier</dt>
|
|
<dd><p class="first">A write <a class="reference internal" href="b.html#term-barrier-1"><em class="xref std std-term">barrier<sup>(1)</sup></em></a> is a block on writing to certain
|
|
<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="m.html#term-memory-location"><em class="xref std std-term">locations</em></a> by
|
|
certain threads or processes.</p>
|
|
<div class="admonition-relevance-to-memory-management admonition">
|
|
<p class="first admonition-title">Relevance to memory management</p>
|
|
<p class="last">Write barriers are used for <a class="reference internal" href="i.html#term-incremental-garbage-collection"><em class="xref std std-term">incremental</em></a> or <a class="reference internal" href="p.html#term-parallel-garbage-collection"><em class="xref std std-term">concurrent</em></a> <a class="reference internal" href="g.html#term-garbage-collection"><em class="xref std std-term">garbage collection</em></a>.
|
|
They are also used to maintain <a class="reference internal" href="r.html#term-remembered-set"><em class="xref std std-term">remembered sets</em></a> for
|
|
<a class="reference internal" href="g.html#term-generational-garbage-collection"><em class="xref std std-term">generational</em></a>
|
|
<a class="reference internal" href="g.html#term-garbage-collector"><em class="xref std std-term">collectors<sup>(1)</sup></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="r.html#term-read-barrier"><em class="xref std std-term">read barrier</em></a>.</p>
|
|
</div>
|
|
</dd>
|
|
<dt id="term-write-fault">write fault</dt>
|
|
<dd><p class="first">An exception which occurs when writing to an address in
|
|
<a class="reference internal" href="v.html#term-virtual-memory"><em class="xref std std-term">virtual memory</em></a>.</p>
|
|
<p>This is probably either a <a class="reference internal" href="p.html#term-page-fault"><em class="xref std std-term">page fault</em></a>, an
|
|
<a class="reference internal" href="i.html#term-invalid-page-fault"><em class="xref std std-term">invalid page fault</em></a> or a <a class="reference internal" href="p.html#term-protection-fault"><em class="xref std std-term">protection fault</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="s.html#term-segmentation-violation"><em class="xref std std-term">segmentation violation</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="r.html#term-read-fault"><em class="xref std std-term">read fault</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="v.html"
|
|
title="previous chapter">Memory Management Glossary: V</a></p>
|
|
<h4>Next topic</h4>
|
|
<p class="topless"><a href="z.html"
|
|
title="next chapter">Memory Management Glossary: Z</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&view=status%3dopen&display=Job:Priority:Title&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="z.html" title="Memory Management Glossary: Z"
|
|
>next</a> |</li>
|
|
<li class="right" >
|
|
<a href="v.html" title="Memory Management Glossary: V"
|
|
>previous</a> |</li>
|
|
<li><a href="../index.html">Memory Pool System 1.111.0 documentation</a> »</li>
|
|
<li><a href="index.html" >Memory Management Glossary</a> »</li>
|
|
</ul>
|
|
</div>
|
|
<div class="footer">
|
|
© <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> |