Todas las lecciones Read in English

Seguridad a fondo · Unidad 21 · Lección 2 de 6

Los objetos tienen una vida

Usa la secuencia de un trabajo para distinguir una referencia guardada de un objeto vigente.

4 minlistaLección breve

Para prepararteSeguridad de memoria: límites y vida útil

Ver todas las lecciones de este tema

Después de esta lección puedes

  • Identifica la garantía de propiedad que falta en la secuencia de un trabajo asíncrono.

Una idea. Una situación. Una decisión razonada.

Cómo funciona

Una referencia sirve mientras el objeto sea válido para la operación. Propiedad y reglas de ciclo evitan usar objetos liberados o reutilizados. La concurrencia complica esto si otro trabajador cambia su vida. Prefiere mecanismos del lenguaje y bibliotecas que expresen propiedad, no acuerdos informales entre código distante.

Objeto creado → Vida válida → Objeto liberadoObjeto creadoVida válidaObjeto liberado
Sigue la relación: Objeto creado → Vida válida → Objeto liberado.

Un trabajo en cola puede durar más que su entrada

Un servicio ficticio de previsualización de imágenes entrega tareas a una cola. En este ejemplo, la cola guarda una referencia sin prolongar la vida del objeto original.

Evento Acción registrada
L1 La petición crea el objeto de imagen P
L2 El trabajo encola una referencia a P
L3 La petición termina y libera P
L4 El trabajo de previsualización comienza

Decisión razonada: el trabajo no puede dar por válido P en L4. L2 registra una ubicación, pero el contrato de esta cola no le concede propiedad. Aunque esa ubicación todavía contenga bytes reconocibles, observarlos no restablece la vida del objeto liberado.

Dos diseños podrían cumplir el requisito: entregar al trabajo una copia propia antes de L3, o usar un mecanismo de propiedad documentado que mantenga P vigente hasta terminar el trabajo. Acelerar la cola no garantiza ninguna de esas condiciones.

Separa un segundo requisito: si varios trabajadores pueden modificar el objeto retenido, garantizar su vida no evita por sí solo las actualizaciones en conflicto. El diseño también debe definir sincronización o inmutabilidad. Revisa ambas obligaciones según el contrato real del lenguaje y la biblioteca; no supongas que todas las referencias se comportan igual.

La distinción clave: Ubicación y vida son propiedades distintas.

Compruébate

Sin reloj ni penalizaciones. Lee cada explicación y vuelve a intentarlo cuando quieras.

  1. ¿Qué cambio resuelve directamente el problema de vida del objeto en L1-L4?

    Ver la respuesta

    Respuesta correcta: Dar al trabajo una copia propia o un propietario que prolongue la vida antes de terminar la petición. Ambos diseños pueden mantener datos válidos según su contrato documentado. La modificación concurrente sigue necesitando una regla independiente.

Pruébalo

  • EscribeEscribe un orden corregido para L1-L4 usando una copia propia o un propietario compartido documentado. Indica cuándo puede liberar el objeto su último propietario.
Referencias