From: Leandro Lucarella Date: Sat, 30 May 2009 23:32:56 +0000 (-0300) Subject: Reacomodar texto de ejemplo de RC X-Git-Tag: entrega-2010-10-08~70 X-Git-Url: https://git.llucax.com/z.facultad/75.00/informe.git/commitdiff_plain/d8e0ffaf45ad8f5b8638399202914ef313768b1c?hp=f422261911478248a1e54e69bae05ad51cea60a0 Reacomodar texto de ejemplo de RC --- diff --git a/source/gc.rst b/source/gc.rst index 43626eb..142e2cb 100644 --- a/source/gc.rst +++ b/source/gc.rst @@ -863,6 +863,11 @@ o cambiar una referencia (cambios en la conectividad del grafo). En un comienzo todas las celdas son accesibles desde el *root set* por lo tanto son todas parte del *live set*. +Se comienza por eliminar la referencia de ``r0`` a ``h1``, que determina +que ``h1`` se convirtió en *basura* (ver figura :vref:`fig:gc-rc-rm-1`). Esto +conduce al decremento del contador de ``h2`` y ``h3`` que permanecen en el +*live set* ya que sus contadores siguen siendo mayores a 0 (ver figura +:vref:`fig:gc-rc-rm-2`). .. fig:: fig:gc-rc-rm-1 @@ -1128,12 +1133,13 @@ son todas parte del *live set*. } -Se comienza por eliminar la referencia de ``r0`` a ``h1``, que determina -que ``h1`` se convirtió en *basura* (ver figura :vref:`fig:gc-rc-rm-1`). Esto -conduce al decremento del contador de ``h2`` y ``h3`` que permanecen en el -*live set* ya que sus contadores siguen siendo mayores a 0 (ver figura -:vref:`fig:gc-rc-rm-2`). +Luego se cambia una referencia (en vez de eliminarse) realizándose la +operación ``update(h3.l, h5)``. Para esto primero se incrementa el contador +de referencias de ``h5`` para evitar confundirlo accidentalmente con +*basura* si se elimina alguna celda que apuntaba a ésta. Luego se procede +a decrementar el contador de ``h2`` que queda en 0, transformándose en +*basura* (ver figura :vref:`fig:gc-rc-up-1`). .. fig:: fig:gc-rc-up-1 @@ -1301,6 +1307,12 @@ conduce al decremento del contador de ``h2`` y ``h3`` que permanecen en el } +Lo mismo pasa cuando se desciende a ``h4``, pero al descender a ``h5`` +y decrementar el contador, éste sigue siendo mayor que 0 (pues ``h3`` va +a apuntar a ``h5``) así que permanece en el *live set*. Finalmente se termina +de actualizar la referencia ``h3.l`` para que apunte a ``h5`` (ver figura +:vref:`fig:gc-rc-up-2`). + .. fig:: fig:gc-rc-up-2 Cambio en la referencia ``h2.l`` :math:`\to` ``h2`` a ``h2.l`` @@ -1469,18 +1481,15 @@ conduce al decremento del contador de ``h2`` y ``h3`` que permanecen en el } -Luego se cambia una referencia (en vez de eliminarse) realizándose la -operación ``update(h3.l, h5)``. Para esto primero se incrementa el contador -de referencias de ``h5`` para evitar confundirlo accidentalmente con -*basura* si se elimina alguna celda que apuntaba a ésta. Luego se procede -a decrementar el contador de ``h2`` que queda en 0, transformándose en -*basura* (ver figura :vref:`fig:gc-rc-up-1`). Lo mismo pasa cuando se -desciende a ``h4``, pero al descender a ``h5`` y decrementar el contador, -éste sigue siendo mayor que 0 (pues ``h3`` va a apuntar a ``h5``) así que -permanece en el *live set*. Finalmente se termina de actualizar la -referencia ``h3.l`` para que apunte a ``h5`` (ver figura -:vref:`fig:gc-rc-up-2`). - +Finalmente se presenta lo que sucede cuando se elimina la última referencia +a un ciclo (en este caso un ciclo simple de 2 celdas: ``h3`` y ``h6``). Se +elimina la única referencia externa al ciclo (``r1``), por lo que se visita +la celda ``h3`` decrementando su contador de referencias, pero éste +continúa siendo mayor que 0 porque la celda ``h6`` (parte del ciclo) la +referencia. Por lo tanto el ciclo, y todas las celdas a las que apunta que +no tienen otras referencias externas y por lo tanto deberían ser *basura* +también (``h5``), no pueden ser recicladas y su memoria es perdida (ver +figura :vref:`fig:gc-rc-cycle`). .. fig:: fig:gc-rc-cycle :padding: 0.5 @@ -1598,16 +1607,6 @@ referencia ``h3.l`` para que apunte a ``h5`` (ver figura } -Finalmente se presenta lo que sucede cuando se elimina la última referencia -a un ciclo (en este caso un ciclo simple de 2 celdas: ``h3`` y ``h6``). Se -elimina la única referencia externa al ciclo (``r1``), por lo que se visita -la celda ``h3`` decrementando su contador de referencias, pero éste -continúa siendo mayor que 0 porque la celda ``h6`` (parte del ciclo) la -referencia. Por lo tanto el ciclo, y todas las celdas a las que apunta que -no tienen otras referencias externas y por lo tanto deberían ser *basura* -también (``h5``), no pueden ser recicladas y su memoria es perdida (ver -figura :vref:`fig:gc-rc-cycle`). - .. _ref_gc_mark_sweep: