SlideShare una empresa de Scribd logo
Manejo de memoria
1.   Manejo de memoria estática
2.   Manejo de memoria dinámica
Introducción
La administración de memoria de una
 computadora es una tarea fundamental debido a
 que la cantidad de memoria es limitada.
El sistema operativo es el encargado de
 administrar la memoria del sistema y compartirla
 entre distintos usuarios y/o aplicaciones.
El RTS (Run Time System) de un lenguaje de
 programación administra la memoria para cada
 programa en ejecución.
La ejecución de un programa requiere que
 diversos elementos se almacenen en la memoria:
  Código del programa (instrucciones)
  Datos
     Permanentes
     Temporales

  Direcciones para controlar de flujo del ejecución del
    programa
Asignación de
Memoria Estática y Dinámica
A la asignación de memoria para algunos
 elementos fijos del programa que es controlada por
 el compilador se le llama asignación de memoria
 estática.

A la asignación y posible recuperación de
 memoria durante la ejecución de un programa y
 bajo su control, se le llama asignación de
 memoria dinámica.
Memoria Estática
Define la cantidad de memoria necesaria para un
 programa durante el tiempo de compilación.
El tamaño no puede cambiar durante el tiempo
 de ejecución del programa.
Algunos lenguajes de programación utilizan la
 palabra static para especificar elementos del
 programa que deben almacenarse en memoria
 estática.
Memoria Estática
Elementos que residen en memoria estática:
  Código del programa
  Las variables definidas en la sección principal del
   programa, las cuales pueden solo cambiar su contenido
   no su tamaño.
  Todas aquellas variables declaradas como estáticas en
   otras clases o módulos.
Estos elementos se almacenan en direcciones fijas
 que son relocalizadas dependiendo de la dirección
 en donde el cargador las coloque para su
 ejecución.
Método común de asignación de memoria
            Mapa de memoria


           Memoria disponible     Dirección alta
            Para el programa
                                  Dirección baja
            Variables estáticas

           Código del programa
El stack de ejecución
Cada subprograma (procedimiento, función, método,
 etc.) requiere una representación de si en tiempo de
 ejecución.
Estas representaciones se almacenan en el stack de
 ejecución con el fin de controlar el flujo de ejecución
 del programa.
Ejemplo
 ….
  public static int factorial (int n){   Cuales elementos del
   if (n==0) return 1;                   programa serán
   else return n*factorial(n-1);         colocados en memoria
 }                                       estática?
 public static void main (String[] a){
   int a=5;                              Que elementos se
   System.out.println(factorial(a));     almacenaran en el
 }                                       stack en tiempo de
                                         ejecución?
Es siempre posible, cuando se diseña un programa,
 conocer la cantidad de memoria necesaria para que
 este se ejecute correctamente?
Memoria Dinámica
Define el tamaño del espacio de memoria necesario
 para un programa en tiempo de ejecución.
 El tamaño de los elementos puede cambiar durante
 la ejecución del programa.
Almacena todos los elementos definidos con la
 palabra new en un programa.
Memoria Dinámica
Las variables dinámicas son aquellas que crecen
 de tamaño o se reducen durante la ejecución de
 un programa.
Estas se almacenan en un espacio de memoria
 llamado heap.
 El heap se localiza en la región de memoria que
 esta encima del stack.
Algunos lenguajes de programación permiten que
 el programador asigne y desasigne manualmente
 la memoria. Java utiliza un recolector de basura.
Uso del heap
Para usar el heap un programa requiere:
  Una o mas variables que refieran el lugar donde se
   encuentran las variables dinámicas.
  Un método para obtener memoria (new)
  Una forma de asignar la dirección de memoria a alguna
   variable (identificador)
  Una forma para referirse a la variable dinámica
public class Punto {
                                                                     Ejemplo
  private int x=0;
  private int y=0;                           public class UsaPunto {
  public static int totalPuntos =0;           public static void main(String[] args){
  Punto (int _x, int _y){                        Punto punto1= new Punto(2,1);
     x=_x;                                       Punto punto2 = new Punto(5,5);
     y=_y;                                       Punto punto3 = punto1;
    totalPuntos++;
  }
  public void setx(int _x){                          Punto[] puntos = {punto1,punto2};
     x= _x;                                          System.out.println(Arrays.toString(puntos));
  }                                                  System.out.println(“Puntos creados “+ Punto.totalPuntos);
  public String toString (){                     }
     return “(”+x+”,”+y+”)”;                 }
  }
}


                      punto1           punto3                         punto2
                                                                                                Punto
  Miembros de             x=2                              x=5                   Miembros
  instancia               y=1                              y=5                   de clase      totalPuntos = 0
                        void setx(int _x)                void setx(int _x)
  Metodos de
                        String toString ()               String toString ()
  instancia
Liberación de memoria
La memoria estática se libera cuando el programa
 finaliza su ejecución.
La memoria dinámica se libera de dos formas:
  Explicita. El programador decide cuando un elemento
   debe ser eliminado de la memoria. El LP provee
   mecanismos para liberación de memoria.
  Implícita. El sistema decide que elementos deben ser
   eliminados para recuperar el espacio de memoria que
   ocupan. El sistema cuenta con un “recolector de
   basura”.
The Garbage Collector
 Algunos lenguajes de programación requieren que el
   programador mantenga la información de todos los objetos
   creados en un programa para que estos puedan ser destruidos
   cuando ya no son requeridos en la ejecución.
 Este método para manejar la memoria puede resultar tedioso y
   propicio a errores.
 Java permite la creación de tantos objetos como sean necesarios
   sin tener que destriurlos explícitamente cuando ya no son
   requeridos.
 El medio ambiente de ejecución de Java cuenta con un
   mecanismo llamado recolector de basura (garbage collector)
   que se encarga de eliminar los objetos cuando ya no existen
   referencias a ellos.
 El recolector de basura, de manera automática, se ejecuta
   periódicamente durante la ejecución de un programa.
Ejemplo
Como almacenar
Cadenas de Caracteres?
Cadenas de Caracteres
Se utilizan secuencias de bits para representar letras y otros símbolos.
                   Alfabéticos
   Caracteres      Dígitos
                   Caracteres Especiales
                   Caracteres de Control…

El numero de caracteres que se pueden representar depende de el
numero de bits con que se represnta cada carácter.
Ejemplo Con 8 bits se pueden representar 256 Caracteres diferentes,
donde cada elemento ocupa una secuencia de 8 bits.

Una cadena de caracteres esta representada por la
concatenación de las hileras de bits que representan los
caracteres individuales.
Una cadena de caracteres es una secuencia finita de 0
 o más caracteres.

La longitud de la cadena de caracteres es el número de
 caracteres que contiene.
  Cadena Vacía o Nula.- Cero caracteres.


Delimitadores: Comúnmente se usan “” o ‘’
  dependiendo del lenguaje de programación.
Ejemplos:
S1=“INSTITUTO”                    longitud = 9
S2=“TECNOLOGICO DE CULIACAN” longitud = 23
Concatenación = Es la operación de unir 2 cadenas
 para formar una sola.

   Ejemplo:
   S3 = S1 + “ ” + S2
   S3=“INSTITUTO TECNOLOGICO DE CULIACAN”
   Longitud de S3 = 33

Subcadenas = Se dice que y es subcadena de S si
 existe:
  S=X+Y+Z
Donde:
X y/o Z pueden ser cadenas vacías:
Si X es cadena vacía entonces Y es subcadena Inicial
Si Z es cadena vacía entonces Y es subcadena final
Ejemplo:
                S = “Estrutura de Datos”

“de” es subcadena de S
“Est” es subcadena inicial de S
“Datos” es subcadena final de S
ALMACENAMIENTO DE CADENAS
Estructura de longitud fija:
   En este formato cada cadena tiene un registro de longitud
   fija (generalmente 80 caracteres).

Estructura de longitud variable con un máximo
   fijo:
   Son cadenas de caracteres que contienen un máximo
   definido, pero su longitud puede variar y se usa un
   delimitador especial al final o la longitud actual como
   parte de la cadena.

Estructuras Enlazadas:
   Cada cadena es almacenada en un nodo que contiene un
   enlace a la siguiente cadena.
Ejemplo Almacenar un programa (Texto)


 C PROGRAM PRINTING TWO INTEGERS IN INCREASING ORDER
 READ *, J , K
 IF ( J.LE.K) THEN
    PRINT *,J,K
 ELSE
    PRINT *,K,J
 ENDIF
 STOP
 END
En estructuras de longitud fija:
     200            210             250
 C                 PROGRAM PRINTING ….

     280              290            300
           READ   * , J , K   ……

     360             370           380
       I F(J.LE.K) THEN         ……

     440             …………
                      …
En estructuras de longitud variable con un
    máximo fijo:
    *usando delimitador: $$


1              C      PROGRAM PRINTING TWO IN… $$
2                      READ *, J , K $$
3
                       IF (J.LE.K) THEN $$

4
                              ………………

5                      END $$
En estructuras de longitud variable con un
máximo fijo:
*usando longitud actual


   55             C       PROGRAM … ORDER
   18                     READ *, J , K
   21
                          IF (J.LE.K) THEN

                                ………………

   4                      END
En estructuras Enlazadas:
                Cadena          Liga
Inicio   C   PROGRAM …..

             READ *, J , K

             IF (J.LE.K) THEN
                     ……

             END

Más contenido relacionado

La actualidad más candente

Noción de archivo real y virtual
Noción de archivo real y virtual Noción de archivo real y virtual
Noción de archivo real y virtual
Laura Guadalupe Rosado Hernández
 
Estructura de datos - Unidad 1: Introducción a las estructuras de datos
Estructura de datos - Unidad 1: Introducción a las estructuras de datosEstructura de datos - Unidad 1: Introducción a las estructuras de datos
Estructura de datos - Unidad 1: Introducción a las estructuras de datos
José Antonio Sandoval Acosta
 
Topicos Avanzados de Programacion - Unidad 4 programacion concurrente
Topicos Avanzados de Programacion - Unidad 4 programacion concurrenteTopicos Avanzados de Programacion - Unidad 4 programacion concurrente
Topicos Avanzados de Programacion - Unidad 4 programacion concurrente
José Antonio Sandoval Acosta
 
Memoria dinamica
Memoria dinamicaMemoria dinamica
Memoria dinamicagusolis93
 
Algoritmo divide y vencerás
Algoritmo divide y vencerásAlgoritmo divide y vencerás
Algoritmo divide y vencerás
loco8888
 
Tipos de datos abstractos
Tipos de datos abstractosTipos de datos abstractos
Tipos de datos abstractos
neftali omar peña balam
 
2. Casos de uso y diagramas de casos de uso
2. Casos de uso y diagramas de casos de uso2. Casos de uso y diagramas de casos de uso
2. Casos de uso y diagramas de casos de uso
Saul Mamani
 
Programación Orientada a Objetos - atributos y métodos
Programación Orientada a Objetos - atributos y métodosProgramación Orientada a Objetos - atributos y métodos
Programación Orientada a Objetos - atributos y métodos
Alvaro Enrique Ruano
 
Arquitectura de Bases de Datos Oracle
Arquitectura de Bases de Datos OracleArquitectura de Bases de Datos Oracle
Arquitectura de Bases de Datos Oracle
vinivaldivieso
 
Mapa conceptual sobre
Mapa conceptual sobre Mapa conceptual sobre
Mapa conceptual sobre Juan Anaya
 
3.1 Administración de memoria CUESTIONARIO
3.1 Administración de memoria CUESTIONARIO3.1 Administración de memoria CUESTIONARIO
3.1 Administración de memoria CUESTIONARIO
Instituto Tecnológico de Tepic
 
Notación infija postfija
Notación infija postfijaNotación infija postfija
Notación infija postfijaOmarzingm
 
Diagramas UML
Diagramas UMLDiagramas UML
Diagramas UML
1da4
 
Estructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamientoEstructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamiento
José Antonio Sandoval Acosta
 
Particiones EstáTicas
Particiones EstáTicasParticiones EstáTicas
Particiones EstáTicas
danielchecar
 

La actualidad más candente (20)

Noción de archivo real y virtual
Noción de archivo real y virtual Noción de archivo real y virtual
Noción de archivo real y virtual
 
Gestion de memoria en windows
Gestion de memoria en windowsGestion de memoria en windows
Gestion de memoria en windows
 
Estructura de datos - Unidad 1: Introducción a las estructuras de datos
Estructura de datos - Unidad 1: Introducción a las estructuras de datosEstructura de datos - Unidad 1: Introducción a las estructuras de datos
Estructura de datos - Unidad 1: Introducción a las estructuras de datos
 
Topicos Avanzados de Programacion - Unidad 4 programacion concurrente
Topicos Avanzados de Programacion - Unidad 4 programacion concurrenteTopicos Avanzados de Programacion - Unidad 4 programacion concurrente
Topicos Avanzados de Programacion - Unidad 4 programacion concurrente
 
Memoria dinamica
Memoria dinamicaMemoria dinamica
Memoria dinamica
 
Colas
ColasColas
Colas
 
Algoritmo del baquero
Algoritmo del baqueroAlgoritmo del baquero
Algoritmo del baquero
 
Algoritmo divide y vencerás
Algoritmo divide y vencerásAlgoritmo divide y vencerás
Algoritmo divide y vencerás
 
Tipos de datos abstractos
Tipos de datos abstractosTipos de datos abstractos
Tipos de datos abstractos
 
2. Casos de uso y diagramas de casos de uso
2. Casos de uso y diagramas de casos de uso2. Casos de uso y diagramas de casos de uso
2. Casos de uso y diagramas de casos de uso
 
Programación Orientada a Objetos - atributos y métodos
Programación Orientada a Objetos - atributos y métodosProgramación Orientada a Objetos - atributos y métodos
Programación Orientada a Objetos - atributos y métodos
 
Pilas y colas
Pilas y colasPilas y colas
Pilas y colas
 
Arquitectura de Bases de Datos Oracle
Arquitectura de Bases de Datos OracleArquitectura de Bases de Datos Oracle
Arquitectura de Bases de Datos Oracle
 
Mapa conceptual sobre
Mapa conceptual sobre Mapa conceptual sobre
Mapa conceptual sobre
 
3.1 Administración de memoria CUESTIONARIO
3.1 Administración de memoria CUESTIONARIO3.1 Administración de memoria CUESTIONARIO
3.1 Administración de memoria CUESTIONARIO
 
Notación infija postfija
Notación infija postfijaNotación infija postfija
Notación infija postfija
 
Diagramas UML
Diagramas UMLDiagramas UML
Diagramas UML
 
Estructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamientoEstructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamiento
 
Pilas, colas, y listas estructura de datos
Pilas, colas, y listas estructura de datosPilas, colas, y listas estructura de datos
Pilas, colas, y listas estructura de datos
 
Particiones EstáTicas
Particiones EstáTicasParticiones EstáTicas
Particiones EstáTicas
 

Destacado

Manejo de memoria
Manejo de memoriaManejo de memoria
Manejo de memoriaIronAngel
 
Manejo de los procesos en los sistemas operativos
Manejo de los procesos en los sistemas operativosManejo de los procesos en los sistemas operativos
Manejo de los procesos en los sistemas operativosCarolina Cols
 
1.5 memoria dinamica
1.5 memoria dinamica1.5 memoria dinamica
1.5 memoria dinamica
erwin_alexander
 
1.3 uso de tipos de datos abstractos
1.3 uso de tipos de datos abstractos1.3 uso de tipos de datos abstractos
1.3 uso de tipos de datos abstractos
erwin_alexander
 
Casa de maquinas memoria de estabilidad y calculo estructural - bloque de a...
Casa de maquinas   memoria de estabilidad y calculo estructural - bloque de a...Casa de maquinas   memoria de estabilidad y calculo estructural - bloque de a...
Casa de maquinas memoria de estabilidad y calculo estructural - bloque de a...
Boris Soto Matos
 
Unidad 1 introducción a las estructuras de datos
Unidad 1 introducción a las estructuras de datosUnidad 1 introducción a las estructuras de datos
Unidad 1 introducción a las estructuras de datos
Urban Skate House
 
Estructura de datos pdf
Estructura de datos pdfEstructura de datos pdf
Estructura de datos pdf
Luis Felipe Tun Poot
 
Sistema operativo windows 2010
Sistema operativo windows 2010Sistema operativo windows 2010
Sistema operativo windows 2010
LOVATON15
 
4 memoria dinamica
4 memoria dinamica4 memoria dinamica
4 memoria dinamica
Pedro Contreras Flores
 
Antecedentes históricos de la administración.ppt modificado
Antecedentes históricos de la administración.ppt modificadoAntecedentes históricos de la administración.ppt modificado
Antecedentes históricos de la administración.ppt modificadoRegina
 
Teoria Clasica de la Administracion
Teoria Clasica de la AdministracionTeoria Clasica de la Administracion
Teoria Clasica de la AdministracionCaarlitos Palomino
 
Teoria Clasica De La Administracion
Teoria Clasica De La AdministracionTeoria Clasica De La Administracion
Teoria Clasica De La Administracion
GestioPolis com
 
Antecedentes historicos de la administracion
Antecedentes historicos de la administracionAntecedentes historicos de la administracion
Antecedentes historicos de la administracionJavier Hernández
 
Desarrollo cognoscitivo Piaget y Vygotsky
Desarrollo cognoscitivo Piaget y VygotskyDesarrollo cognoscitivo Piaget y Vygotsky
Desarrollo cognoscitivo Piaget y Vygotsky
Michi Muralles
 
Historia y evolucion de la administracion
Historia y evolucion de la administracionHistoria y evolucion de la administracion
Historia y evolucion de la administracionGunBlade
 
Proceso admnistrativo[1]
Proceso admnistrativo[1]Proceso admnistrativo[1]
Proceso admnistrativo[1]V G
 
Escuelas de la administración
Escuelas de la administraciónEscuelas de la administración
Escuelas de la administración
ANEP - DETP
 
PROCESO ADMINISTRATIVO
PROCESO ADMINISTRATIVOPROCESO ADMINISTRATIVO
PROCESO ADMINISTRATIVO
WILSON VELASTEGUI
 

Destacado (20)

Ape unidad4
Ape unidad4Ape unidad4
Ape unidad4
 
Manejo de memoria
Manejo de memoriaManejo de memoria
Manejo de memoria
 
Manejo de los procesos en los sistemas operativos
Manejo de los procesos en los sistemas operativosManejo de los procesos en los sistemas operativos
Manejo de los procesos en los sistemas operativos
 
1.5 memoria dinamica
1.5 memoria dinamica1.5 memoria dinamica
1.5 memoria dinamica
 
1.3 uso de tipos de datos abstractos
1.3 uso de tipos de datos abstractos1.3 uso de tipos de datos abstractos
1.3 uso de tipos de datos abstractos
 
Casa de maquinas memoria de estabilidad y calculo estructural - bloque de a...
Casa de maquinas   memoria de estabilidad y calculo estructural - bloque de a...Casa de maquinas   memoria de estabilidad y calculo estructural - bloque de a...
Casa de maquinas memoria de estabilidad y calculo estructural - bloque de a...
 
Unidad 1 introducción a las estructuras de datos
Unidad 1 introducción a las estructuras de datosUnidad 1 introducción a las estructuras de datos
Unidad 1 introducción a las estructuras de datos
 
Estructura de Datos
Estructura de DatosEstructura de Datos
Estructura de Datos
 
Estructura de datos pdf
Estructura de datos pdfEstructura de datos pdf
Estructura de datos pdf
 
Sistema operativo windows 2010
Sistema operativo windows 2010Sistema operativo windows 2010
Sistema operativo windows 2010
 
4 memoria dinamica
4 memoria dinamica4 memoria dinamica
4 memoria dinamica
 
Antecedentes históricos de la administración.ppt modificado
Antecedentes históricos de la administración.ppt modificadoAntecedentes históricos de la administración.ppt modificado
Antecedentes históricos de la administración.ppt modificado
 
Teoria Clasica de la Administracion
Teoria Clasica de la AdministracionTeoria Clasica de la Administracion
Teoria Clasica de la Administracion
 
Teoria Clasica De La Administracion
Teoria Clasica De La AdministracionTeoria Clasica De La Administracion
Teoria Clasica De La Administracion
 
Antecedentes historicos de la administracion
Antecedentes historicos de la administracionAntecedentes historicos de la administracion
Antecedentes historicos de la administracion
 
Desarrollo cognoscitivo Piaget y Vygotsky
Desarrollo cognoscitivo Piaget y VygotskyDesarrollo cognoscitivo Piaget y Vygotsky
Desarrollo cognoscitivo Piaget y Vygotsky
 
Historia y evolucion de la administracion
Historia y evolucion de la administracionHistoria y evolucion de la administracion
Historia y evolucion de la administracion
 
Proceso admnistrativo[1]
Proceso admnistrativo[1]Proceso admnistrativo[1]
Proceso admnistrativo[1]
 
Escuelas de la administración
Escuelas de la administraciónEscuelas de la administración
Escuelas de la administración
 
PROCESO ADMINISTRATIVO
PROCESO ADMINISTRATIVOPROCESO ADMINISTRATIVO
PROCESO ADMINISTRATIVO
 

Similar a Manejo de memoria

Java fundamentos -15 consejos prácticos - Encuentro Universitario Comunidad J...
Java fundamentos -15 consejos prácticos - Encuentro Universitario Comunidad J...Java fundamentos -15 consejos prácticos - Encuentro Universitario Comunidad J...
Java fundamentos -15 consejos prácticos - Encuentro Universitario Comunidad J...
Eudris Cabrera
 
Java fundamentos -15 consejos practicos open saturday 2018
Java fundamentos -15 consejos practicos open saturday 2018Java fundamentos -15 consejos practicos open saturday 2018
Java fundamentos -15 consejos practicos open saturday 2018
Eudris Cabrera
 
Funciones con vectores y matrices
Funciones con vectores y matricesFunciones con vectores y matrices
Funciones con vectores y matricesJohanna Marin
 
Funciones con vectores y matrices
Funciones con vectores y matricesFunciones con vectores y matrices
Funciones con vectores y matricesJohanna Marin
 
PARADIGMAS FP Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
PARADIGMAS FP  Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONAPARADIGMAS FP  Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
PARADIGMAS FP Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
Víctor Bolinches
 
Desarrollo aplicaciones visuales
Desarrollo aplicaciones visualesDesarrollo aplicaciones visuales
Desarrollo aplicaciones visuales
AlejandroADelaCruzMn
 
Desarrollo aplicaciones visuales
Desarrollo aplicaciones visualesDesarrollo aplicaciones visuales
Desarrollo aplicaciones visuales
AlejandroADelaCruzMn
 
Desarrollo aplicaciones visuales
Desarrollo aplicaciones visualesDesarrollo aplicaciones visuales
Desarrollo aplicaciones visuales
AlejandroADelaCruzMn
 
Pascal
PascalPascal
Algoritmos y lenjuage de programacion
Algoritmos y  lenjuage de programacionAlgoritmos y  lenjuage de programacion
Algoritmos y lenjuage de programacionYsaac Ruiz
 
introducción a la programación utilizando C++.pptx
introducción a la programación utilizando C++.pptxintroducción a la programación utilizando C++.pptx
introducción a la programación utilizando C++.pptx
Erisbeymarin
 
Java fundamentos 15 consejos prácticos - ITLA Tech Day 2018
Java fundamentos   15 consejos prácticos - ITLA Tech Day 2018Java fundamentos   15 consejos prácticos - ITLA Tech Day 2018
Java fundamentos 15 consejos prácticos - ITLA Tech Day 2018
Eudris Cabrera
 
A1 u1-16230227
A1 u1-16230227A1 u1-16230227
A1 u1-16230227
erikalejo
 
Unidad 2 programación estructurada
Unidad 2 programación estructuradaUnidad 2 programación estructurada
Unidad 2 programación estructurada
Roberth Camana
 
clases de herramientas lorenita
clases de herramientas lorenitaclases de herramientas lorenita
clases de herramientas lorenita
Lorenita Gonzales Rivera
 
Manejo de-memoria
Manejo de-memoriaManejo de-memoria
Manejo de-memoria
ArturoHernandez78789
 
Diego ochoaguerrero nelsondavidluna
Diego ochoaguerrero nelsondavidlunaDiego ochoaguerrero nelsondavidluna
Diego ochoaguerrero nelsondavidlunaDiǝgo Fǝr
 
La programación informática o programación algorítmica, acortada
La programación informática o programación algorítmica, acortadaLa programación informática o programación algorítmica, acortada
La programación informática o programación algorítmica, acortada
AeChm-MgMs-NnNm-OpSe
 
Programación en c++
Programación en c++Programación en c++
Programación en c++
andermijan
 

Similar a Manejo de memoria (20)

Java fundamentos -15 consejos prácticos - Encuentro Universitario Comunidad J...
Java fundamentos -15 consejos prácticos - Encuentro Universitario Comunidad J...Java fundamentos -15 consejos prácticos - Encuentro Universitario Comunidad J...
Java fundamentos -15 consejos prácticos - Encuentro Universitario Comunidad J...
 
Java fundamentos -15 consejos practicos open saturday 2018
Java fundamentos -15 consejos practicos open saturday 2018Java fundamentos -15 consejos practicos open saturday 2018
Java fundamentos -15 consejos practicos open saturday 2018
 
Funciones con vectores y matrices
Funciones con vectores y matricesFunciones con vectores y matrices
Funciones con vectores y matrices
 
Funciones con vectores y matrices
Funciones con vectores y matricesFunciones con vectores y matrices
Funciones con vectores y matrices
 
PARADIGMAS FP Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
PARADIGMAS FP  Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONAPARADIGMAS FP  Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
PARADIGMAS FP Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONA
 
Desarrollo aplicaciones visuales
Desarrollo aplicaciones visualesDesarrollo aplicaciones visuales
Desarrollo aplicaciones visuales
 
Desarrollo aplicaciones visuales
Desarrollo aplicaciones visualesDesarrollo aplicaciones visuales
Desarrollo aplicaciones visuales
 
Desarrollo aplicaciones visuales
Desarrollo aplicaciones visualesDesarrollo aplicaciones visuales
Desarrollo aplicaciones visuales
 
Pascal
PascalPascal
Pascal
 
Algoritmos y lenjuage de programacion
Algoritmos y  lenjuage de programacionAlgoritmos y  lenjuage de programacion
Algoritmos y lenjuage de programacion
 
introducción a la programación utilizando C++.pptx
introducción a la programación utilizando C++.pptxintroducción a la programación utilizando C++.pptx
introducción a la programación utilizando C++.pptx
 
Java fundamentos 15 consejos prácticos - ITLA Tech Day 2018
Java fundamentos   15 consejos prácticos - ITLA Tech Day 2018Java fundamentos   15 consejos prácticos - ITLA Tech Day 2018
Java fundamentos 15 consejos prácticos - ITLA Tech Day 2018
 
A1 u1-16230227
A1 u1-16230227A1 u1-16230227
A1 u1-16230227
 
Unidad 2 programación estructurada
Unidad 2 programación estructuradaUnidad 2 programación estructurada
Unidad 2 programación estructurada
 
clases de herramientas lorenita
clases de herramientas lorenitaclases de herramientas lorenita
clases de herramientas lorenita
 
Tema 11
Tema 11Tema 11
Tema 11
 
Manejo de-memoria
Manejo de-memoriaManejo de-memoria
Manejo de-memoria
 
Diego ochoaguerrero nelsondavidluna
Diego ochoaguerrero nelsondavidlunaDiego ochoaguerrero nelsondavidluna
Diego ochoaguerrero nelsondavidluna
 
La programación informática o programación algorítmica, acortada
La programación informática o programación algorítmica, acortadaLa programación informática o programación algorítmica, acortada
La programación informática o programación algorítmica, acortada
 
Programación en c++
Programación en c++Programación en c++
Programación en c++
 

Más de Valentin Manzano

Mapa conceptual.gestion de riesgos
Mapa conceptual.gestion de riesgosMapa conceptual.gestion de riesgos
Mapa conceptual.gestion de riesgos
Valentin Manzano
 
Gestion de servicio de ti
Gestion de servicio de tiGestion de servicio de ti
Gestion de servicio de ti
Valentin Manzano
 
Mapa conceptual
Mapa conceptualMapa conceptual
Mapa conceptual
Valentin Manzano
 
Exposicion.investigacion
Exposicion.investigacionExposicion.investigacion
Exposicion.investigacion
Valentin Manzano
 
Analisis del proceso en la conversion de la señal analogica a digit_viceversa
Analisis del proceso en la conversion de la señal analogica a digit_viceversaAnalisis del proceso en la conversion de la señal analogica a digit_viceversa
Analisis del proceso en la conversion de la señal analogica a digit_viceversaValentin Manzano
 
Cuadro comparativo de llos medios de transmision guiados y no guiados
Cuadro comparativo de llos medios de transmision guiados y no guiadosCuadro comparativo de llos medios de transmision guiados y no guiados
Cuadro comparativo de llos medios de transmision guiados y no guiadosValentin Manzano
 
Cuadro comptv medios de transmision guiados y no guiados
Cuadro comptv  medios de transmision guiados y no guiadosCuadro comptv  medios de transmision guiados y no guiados
Cuadro comptv medios de transmision guiados y no guiadosValentin Manzano
 
Ensayo telecomunicaciones valentin_manzano_crisanto
Ensayo telecomunicaciones valentin_manzano_crisantoEnsayo telecomunicaciones valentin_manzano_crisanto
Ensayo telecomunicaciones valentin_manzano_crisantoValentin Manzano
 
Ensayo telecomunicaciones samuel_ballesteros_benito
Ensayo telecomunicaciones samuel_ballesteros_benitoEnsayo telecomunicaciones samuel_ballesteros_benito
Ensayo telecomunicaciones samuel_ballesteros_benitoValentin Manzano
 
Ensayo telecomunicaciones samuel_ballesteros_benito
Ensayo telecomunicaciones samuel_ballesteros_benitoEnsayo telecomunicaciones samuel_ballesteros_benito
Ensayo telecomunicaciones samuel_ballesteros_benitoValentin Manzano
 

Más de Valentin Manzano (15)

Mapa conceptual.gestion de riesgos
Mapa conceptual.gestion de riesgosMapa conceptual.gestion de riesgos
Mapa conceptual.gestion de riesgos
 
Gestion de servicio de ti
Gestion de servicio de tiGestion de servicio de ti
Gestion de servicio de ti
 
Mapa conceptual
Mapa conceptualMapa conceptual
Mapa conceptual
 
Exposicion.investigacion
Exposicion.investigacionExposicion.investigacion
Exposicion.investigacion
 
Tipos de módeems
Tipos de módeemsTipos de módeems
Tipos de módeems
 
Analisis del proceso en la conversion de la señal analogica a digit_viceversa
Analisis del proceso en la conversion de la señal analogica a digit_viceversaAnalisis del proceso en la conversion de la señal analogica a digit_viceversa
Analisis del proceso en la conversion de la señal analogica a digit_viceversa
 
Cuadro comparativo de llos medios de transmision guiados y no guiados
Cuadro comparativo de llos medios de transmision guiados y no guiadosCuadro comparativo de llos medios de transmision guiados y no guiados
Cuadro comparativo de llos medios de transmision guiados y no guiados
 
Cuadro comptv medios de transmision guiados y no guiados
Cuadro comptv  medios de transmision guiados y no guiadosCuadro comptv  medios de transmision guiados y no guiados
Cuadro comptv medios de transmision guiados y no guiados
 
Ensayo telecomunicaciones valentin_manzano_crisanto
Ensayo telecomunicaciones valentin_manzano_crisantoEnsayo telecomunicaciones valentin_manzano_crisanto
Ensayo telecomunicaciones valentin_manzano_crisanto
 
Ensayo telecomunicaciones samuel_ballesteros_benito
Ensayo telecomunicaciones samuel_ballesteros_benitoEnsayo telecomunicaciones samuel_ballesteros_benito
Ensayo telecomunicaciones samuel_ballesteros_benito
 
Ensayo telecomunicaciones samuel_ballesteros_benito
Ensayo telecomunicaciones samuel_ballesteros_benitoEnsayo telecomunicaciones samuel_ballesteros_benito
Ensayo telecomunicaciones samuel_ballesteros_benito
 
Unidad 1
Unidad 1Unidad 1
Unidad 1
 
Unidad 1
Unidad 1Unidad 1
Unidad 1
 
Mapa conceptual
Mapa conceptualMapa conceptual
Mapa conceptual
 
Rodrigo
RodrigoRodrigo
Rodrigo
 

Manejo de memoria

  • 1. Manejo de memoria 1. Manejo de memoria estática 2. Manejo de memoria dinámica
  • 2. Introducción La administración de memoria de una computadora es una tarea fundamental debido a que la cantidad de memoria es limitada. El sistema operativo es el encargado de administrar la memoria del sistema y compartirla entre distintos usuarios y/o aplicaciones. El RTS (Run Time System) de un lenguaje de programación administra la memoria para cada programa en ejecución.
  • 3. La ejecución de un programa requiere que diversos elementos se almacenen en la memoria: Código del programa (instrucciones) Datos  Permanentes  Temporales Direcciones para controlar de flujo del ejecución del programa
  • 4. Asignación de Memoria Estática y Dinámica A la asignación de memoria para algunos elementos fijos del programa que es controlada por el compilador se le llama asignación de memoria estática. A la asignación y posible recuperación de memoria durante la ejecución de un programa y bajo su control, se le llama asignación de memoria dinámica.
  • 5. Memoria Estática Define la cantidad de memoria necesaria para un programa durante el tiempo de compilación. El tamaño no puede cambiar durante el tiempo de ejecución del programa. Algunos lenguajes de programación utilizan la palabra static para especificar elementos del programa que deben almacenarse en memoria estática.
  • 6. Memoria Estática Elementos que residen en memoria estática: Código del programa Las variables definidas en la sección principal del programa, las cuales pueden solo cambiar su contenido no su tamaño. Todas aquellas variables declaradas como estáticas en otras clases o módulos. Estos elementos se almacenan en direcciones fijas que son relocalizadas dependiendo de la dirección en donde el cargador las coloque para su ejecución.
  • 7. Método común de asignación de memoria Mapa de memoria Memoria disponible Dirección alta Para el programa Dirección baja Variables estáticas Código del programa
  • 8. El stack de ejecución Cada subprograma (procedimiento, función, método, etc.) requiere una representación de si en tiempo de ejecución. Estas representaciones se almacenan en el stack de ejecución con el fin de controlar el flujo de ejecución del programa.
  • 9. Ejemplo …. public static int factorial (int n){ Cuales elementos del if (n==0) return 1; programa serán else return n*factorial(n-1); colocados en memoria } estática? public static void main (String[] a){ int a=5; Que elementos se System.out.println(factorial(a)); almacenaran en el } stack en tiempo de ejecución?
  • 10. Es siempre posible, cuando se diseña un programa, conocer la cantidad de memoria necesaria para que este se ejecute correctamente?
  • 11. Memoria Dinámica Define el tamaño del espacio de memoria necesario para un programa en tiempo de ejecución.  El tamaño de los elementos puede cambiar durante la ejecución del programa. Almacena todos los elementos definidos con la palabra new en un programa.
  • 12. Memoria Dinámica Las variables dinámicas son aquellas que crecen de tamaño o se reducen durante la ejecución de un programa. Estas se almacenan en un espacio de memoria llamado heap.  El heap se localiza en la región de memoria que esta encima del stack. Algunos lenguajes de programación permiten que el programador asigne y desasigne manualmente la memoria. Java utiliza un recolector de basura.
  • 13. Uso del heap Para usar el heap un programa requiere: Una o mas variables que refieran el lugar donde se encuentran las variables dinámicas. Un método para obtener memoria (new) Una forma de asignar la dirección de memoria a alguna variable (identificador) Una forma para referirse a la variable dinámica
  • 14. public class Punto { Ejemplo private int x=0; private int y=0; public class UsaPunto { public static int totalPuntos =0; public static void main(String[] args){ Punto (int _x, int _y){ Punto punto1= new Punto(2,1); x=_x; Punto punto2 = new Punto(5,5); y=_y; Punto punto3 = punto1; totalPuntos++; } public void setx(int _x){ Punto[] puntos = {punto1,punto2}; x= _x; System.out.println(Arrays.toString(puntos)); } System.out.println(“Puntos creados “+ Punto.totalPuntos); public String toString (){ } return “(”+x+”,”+y+”)”; } } } punto1 punto3 punto2 Punto Miembros de x=2 x=5 Miembros instancia y=1 y=5 de clase totalPuntos = 0 void setx(int _x) void setx(int _x) Metodos de String toString () String toString () instancia
  • 15. Liberación de memoria La memoria estática se libera cuando el programa finaliza su ejecución. La memoria dinámica se libera de dos formas: Explicita. El programador decide cuando un elemento debe ser eliminado de la memoria. El LP provee mecanismos para liberación de memoria. Implícita. El sistema decide que elementos deben ser eliminados para recuperar el espacio de memoria que ocupan. El sistema cuenta con un “recolector de basura”.
  • 16. The Garbage Collector Algunos lenguajes de programación requieren que el programador mantenga la información de todos los objetos creados en un programa para que estos puedan ser destruidos cuando ya no son requeridos en la ejecución. Este método para manejar la memoria puede resultar tedioso y propicio a errores. Java permite la creación de tantos objetos como sean necesarios sin tener que destriurlos explícitamente cuando ya no son requeridos. El medio ambiente de ejecución de Java cuenta con un mecanismo llamado recolector de basura (garbage collector) que se encarga de eliminar los objetos cuando ya no existen referencias a ellos. El recolector de basura, de manera automática, se ejecuta periódicamente durante la ejecución de un programa.
  • 18. Cadenas de Caracteres Se utilizan secuencias de bits para representar letras y otros símbolos. Alfabéticos Caracteres Dígitos Caracteres Especiales Caracteres de Control… El numero de caracteres que se pueden representar depende de el numero de bits con que se represnta cada carácter. Ejemplo Con 8 bits se pueden representar 256 Caracteres diferentes, donde cada elemento ocupa una secuencia de 8 bits. Una cadena de caracteres esta representada por la concatenación de las hileras de bits que representan los caracteres individuales.
  • 19. Una cadena de caracteres es una secuencia finita de 0 o más caracteres. La longitud de la cadena de caracteres es el número de caracteres que contiene. Cadena Vacía o Nula.- Cero caracteres. Delimitadores: Comúnmente se usan “” o ‘’ dependiendo del lenguaje de programación. Ejemplos: S1=“INSTITUTO” longitud = 9 S2=“TECNOLOGICO DE CULIACAN” longitud = 23
  • 20. Concatenación = Es la operación de unir 2 cadenas para formar una sola. Ejemplo: S3 = S1 + “ ” + S2 S3=“INSTITUTO TECNOLOGICO DE CULIACAN” Longitud de S3 = 33 Subcadenas = Se dice que y es subcadena de S si existe: S=X+Y+Z Donde: X y/o Z pueden ser cadenas vacías: Si X es cadena vacía entonces Y es subcadena Inicial Si Z es cadena vacía entonces Y es subcadena final
  • 21. Ejemplo: S = “Estrutura de Datos” “de” es subcadena de S “Est” es subcadena inicial de S “Datos” es subcadena final de S
  • 22. ALMACENAMIENTO DE CADENAS Estructura de longitud fija: En este formato cada cadena tiene un registro de longitud fija (generalmente 80 caracteres). Estructura de longitud variable con un máximo fijo: Son cadenas de caracteres que contienen un máximo definido, pero su longitud puede variar y se usa un delimitador especial al final o la longitud actual como parte de la cadena. Estructuras Enlazadas: Cada cadena es almacenada en un nodo que contiene un enlace a la siguiente cadena.
  • 23. Ejemplo Almacenar un programa (Texto) C PROGRAM PRINTING TWO INTEGERS IN INCREASING ORDER READ *, J , K IF ( J.LE.K) THEN PRINT *,J,K ELSE PRINT *,K,J ENDIF STOP END
  • 24. En estructuras de longitud fija: 200 210 250 C PROGRAM PRINTING …. 280 290 300 READ * , J , K …… 360 370 380 I F(J.LE.K) THEN …… 440 ………… …
  • 25. En estructuras de longitud variable con un máximo fijo: *usando delimitador: $$ 1 C PROGRAM PRINTING TWO IN… $$ 2 READ *, J , K $$ 3 IF (J.LE.K) THEN $$ 4 ……………… 5 END $$
  • 26. En estructuras de longitud variable con un máximo fijo: *usando longitud actual 55 C PROGRAM … ORDER 18 READ *, J , K 21 IF (J.LE.K) THEN ……………… 4 END
  • 27. En estructuras Enlazadas: Cadena Liga Inicio C PROGRAM ….. READ *, J , K IF (J.LE.K) THEN …… END