.. _glossary-e: ============================= Memory Management Glossary: E ============================= .. include:: alphabet.txt .. glossary:: ecru .. see:: :term:`off-white`. edge In a :term:`graph`, an edge is a connection between two :term:`nodes`. In a directed graph (digraph), edges have a direction; otherwise the start and end nodes are interchangeable. By convention, two directed edges between the same two nodes, but in different directions, are depicted as a bi-directional edge. Typically an edge represents some relation between nodes. .. relevance:: In memory management, edges normally represent the fact that an :term:`object` holds a :term:`reference` to another object. .. seealso:: :term:`graph`. entry table (1) An entry table is a table of :term:`references` into a set of :term:`objects` used to indirect references from the outside. The Lieberman-Hewitt :term:`collector (1)` represented references from older :term:`generations` to younger ones by indirect pointers through an entry table in the younger generation that contained the actual :term:`address` of the young object. This is fairly expensive without special hardware; other :term:`generational ` collectors generally use :term:`remembered sets`. .. seealso:: :term:`generational garbage collection`, :term:`exit table`. .. bibref:: :ref:`Lieberman & Hewitt (1983) `. entry table (2) An entry table is an implementation of a :term:`remembered set`, where, for a given :term:`generation`, there is a list of :term:`objects` in older generations which contain :term:`references` into that generation. One could also store the actual :term:`locations ` of the references, which would save time when :term:`scanning `, but incur other costs. .. similar:: :term:`remembered set`. .. seealso:: :term:`generational garbage collection`, :term:`exit table`. exact garbage collection .. aka:: *precise garbage collection*, *type-accurate garbage collection*. :term:`Garbage collection` is exact (or precise) if it deals only with :term:`exact references`. An exact :term:`collector (1)` needs to know the :term:`format` of the :term:`objects` and the :term:`roots`, so that it can tell which fields are references. .. opposite:: :term:`conservative garbage collection`. exact reference .. aka:: *precise reference*, *sure reference*. An exact or precise or sure reference is a value the :term:`collector (1)` knows is a :term:`reference`. This is the usual sort of reference. The term is used to draw a contrast with :term:`ambiguous reference`. .. opposite:: :term:`ambiguous reference`. exact root .. aka:: *precise root*. An exact or precise root is a :term:`root` that contains only :term:`exact references`. .. opposite:: :term:`ambiguous root`. .. seealso:: :term:`exact reference`. .. mps:specific:: An exact root has :term:`rank` :c:func:`mps_rank_exact`. exact segregated fit A :term:`segregated fit` :term:`allocation mechanism` which has a separate :term:`free list` for each possible block size. The array of free lists may be represented sparsely. Large blocks may be treated separately. .. seealso:: :term:`segregated fit`, :term:`segregated free list`, :term:`allocation mechanism`. .. bibref:: :ref:`Wilson et al. (1995) `. execution stack .. see:: :term:`control stack`. exit table An exit table is a table of all :term:`references` from a set of :term:`objects` to objects outside the set. .. seealso:: :term:`entry table (1)`, :term:`entry table (2)`. .. bibref:: :ref:`Lieberman & Hewitt (1983) `. extent .. see:: :term:`lifetime`. external fragmentation External :term:`fragmentation` is the inability to use :term:`memory (1)` because :term:`free (3)` memory is divided into many small :term:`blocks`. If :term:`live` :term:`objects` are scattered, the free blocks cannot be :term:`coalesced`, and hence no large blocks can be :term:`allocated`. Common solutions to external fragmentation include: 1. :term:`Moving garbage collection `; 2. :term:`Handles`; 3. Making all your objects the same size. .. seealso:: :term:`internal fragmentation`. .. bibref:: :ref:`Johnstone & Wilson (1998) `.