Articulo de referencia

Tienda muerta

En programación informática , una variable muerta es una variable local a la que se le asigna un valor pero que no es leída por ninguna instrucción posterior . Las variables mue...

En programación informática , una variable muerta es una variable local a la que se le asigna un valor pero que no es leída por ninguna instrucción posterior . Las variables muertas desperdician tiempo de procesador y memoria , y pueden detectarse mediante el análisis estático de programas y eliminarse con un compilador optimizador .

Si el propósito de un almacenamiento es sobrescribir datos intencionalmente, por ejemplo, cuando se elimina una contraseña de la memoria, las optimizaciones de almacenamiento muerto pueden impedir la escritura, lo que genera un problema de seguridad. [ 1 ] Algunas bibliotecas del sistema tienen funciones específicas diseñadas para evitar estas optimizaciones peligrosas, por ejemplo, explicit_bzeroen OpenBSD . [ 2 ]

Ejemplos

Java

Ejemplo de tienda muerta en Java :

// DeadStoreExample.java import java.util.ArrayList ; import java.util.Arrays ; import java.util.List ;public class DeadStoreExample { public static void main ( String [] args ) { List < String > list = new ArrayList < String > (); // Este es un Dead Store, ya que el ArrayList nunca se lee. list = getList (); System . out . println ( list ); }private static List < String > getList () { return new ArrayList < String > ( Arrays . asList ( "Hello" )); } }

En el código anterior ArrayList<String>se instanció un objeto pero nunca se utilizó. En cambio, en la siguiente línea, la variable que lo referencia se establece para que apunte a un objeto diferente. El ArrayListobjeto que se creó cuando listse declaró ahora deberá liberarse, por ejemplo, mediante un recolector de basura .

JavaScript

Ejemplo de tienda inactiva en JavaScript :

función func ( a , b ) { var x ; var i = 300 ; while ( i -- ) { x = a + b ; // almacenamiento muerto } }

El código dentro del bucle sobrescribe repetidamente la misma variable, por lo que se puede reducir a una sola llamada. [ 3 ]

Véase también

Referencias

  1. "Optimización insegura del compilador | OWASP" .
  2. "Páginas del manual de OpenBSD" . man.openbsd.org . Consultado el 14 de mayo de 2016 .
  3. "HTML5 y rendimiento real de sitios web: la séptima vista previa de la plataforma IE9 ya está disponible para desarrolladores" .