SlideShare une entreprise Scribd logo
1  sur  29
3 - GESTIÓN DE MEMORIA
Curso de desarrollo de aplicaciones móviles para iPhone y iPad


                 endika.gutierrez@urbegi.com
                   alex.rayon@urbegi.com

                                      Urbegi Learning
                                         Contents
CONTENIDO

• Gestión   de la Memoria

• Alojamiento   estático

• Gestión   manual de memoria

• Recolección   de basura

• Conteo    de referencias

• Conteo    de referencias automático
CONTENIDO

   • Gestión    de la Memoria

• Alojamiento   estático

• Gestión   manual de memoria

• Recolección   de basura

• Conteo    de referencias

• Conteo    de referencias automático
GESTIÓN DE
                   MEMORIA

• Lagestión de memoria se conoce como el proceso de
 reserva y liberación dinámica de la memoria volatil, es
 decir, memoria RAM.

• Entodo el transcurso de la informática se han dado diferentes
 aproximaciones para solucionar este problema
GESTIÓN DE
                    MEMORIA 2

• La   gestión de memoria es un proceso susceptible a errores.

• Una de las principales fuentes de fallos en tiempo de
 ejecución

  • Las
      diferentes aproximaciones tratan de simplificar este
   proceso y por tanto reducir los errores que se producen
CONTENIDO

• Gestión   de la Memoria

   • Alojamiento    estático

• Gestión   manual de memoria

• Recolección   de basura

• Conteo    de referencias

• Conteo    de referencias automático
ALOJAMIENTO
                   ESTÁTICO

• Modelo   de gestión de memoria de los primeros sistemas

• Se reserva toda la memoria de manera estática a la carga de
 la aplicación y se libera toda ella al cierre de la aplicación

• Empleada   en los origines de la informática
ALOJAMIENTO
                    ESTÁTICO 2
• Presente    en lenguajes antiguos como Basic o ensamblador
• Ventajas
    • Manejo    de memoria sencillo
    • Libre   de errores
• Desventajas
    • Poco    óptimo, se desaprovecha mucha memoria
    • No   permite estructuras de tamaño dinámico
CONTENIDO

• Gestión   de la Memoria

• Alojamiento   estático

   • Gestión    manual de memoria

• Recolección   de basura

• Conteo    de referencias

• Conteo    de referencias automático
GESTIÓN MANUAL
                DE LA MEMORIA
• Siguiente   aproximación a la gestión de la memoria

• Se   permite la creación de bloques de memoria dinámicos

• Esresponsabilidad del programador decidir donde se liberarán
 estos bloques

       • Inconveniente: Si
                         un puntero es compartido por dos
        objetos, cuando se destruya uno de ellos no sabra si
        destruirlo o no
GESTIÓN MANUAL
             DE LA MEMORIA 2

• Empleado   en Lenguajes de más bajo nivel C/C++

• Este
     tipo de gestión de memoria se encuentra presente en
 iOS para la gestión de estructuras de C

    • Recordemos   que Objective-C es un superconjunto de C
GESTIÓN MANUAL
              DE LA MEMORIA 3
• Ventajas

    • Permite   la reserva dinámica de memoria
    • Elmétodo más eficiente, no se desperdicia memoria ni
     tiempo de ejecución.
• Desventajas

    • Haceresponsable al programador de destruir los objetos
     creados.
    • Es   el más propenso a errores
CONTENIDO

• Gestión   de la Memoria

• Alojamiento   estático

• Gestión   manual de memoria

   • Recolección    de basura

• Conteo    de referencias

• Conteo    de referencias automático
RECOLECCIÓN DE
                  BASURA

• Trata   de abstraer al programador de la gestión de la memoria

• Basado en un proceso denominado Recolector de Basura
 encargado de buscar y liberar los bloques de memoria que no
 se estén usando.

• Presente   en los lenguajes interpretados y Java
RECOLECCIÓN DE
                  BASURA 2
• Ventajas

    • Asegura    el uso eficiente de la memoria
    • El
       programador se abstrae completamente de la gestión
     de la memoria
• Desventajas

    • Impacto en el rendimiento ya que se tiene que ejecutar el
     recolector de basura
    • Existe   una cierta latencia en la liberación de la memoria
CONTENIDO

• Gestión   de la Memoria

• Alojamiento   estático

• Gestión   manual de memoria

• Recolección   de basura

   • Conteo     de referencias

• Conteo    de referencias automático
CONTEO DE
                 REFERENCIAS



• Detodas las alternativas para la gestión de la memoria
 Objective-C opta por el conteo de referencias
CONTEO DE
                  REFERENCIAS 2
• Basado   en un contador asociado a cada bloque de memoria

• Este   cuenta el número de variables que referencian al objeto

  • Porlo tanto, cuando el contador llega a 0 el objeto se libera
   automáticamente

  • Cada vez que se asigna un objeto a la variable se llama al
   método retain y cada vez que se deja de referenciar se
   llama al método release
CONTEO DE
                  REFERENCIAS 3
• Ventajas

    • Solucionaalgunos de los problemas que presenta la
     gestión de memoria manual.

    • Si
       un objeto es compartido se liberar cuando ningun
     objeto lo reuquiera

    • Eficienteen cuanto a tiempo de proceso ya que no
     necesita ningún proceso externo
CONTEO DE
                  REFERENCIAS 4
• Desventajas

   • Sigue   delegando responsabilidad en el desarrollador

     • Si   se olvida un retain puede dar errores de acceso

     • Si   se olvida un release quedan bloques sin liberar

   • Se tiene que mantener un entero por cada objeto con el
     proposito de almacenar el contador
CONTENIDO

• Gestión   de la Memoria

• Alojamiento   estático

• Gestión   manual de memoria

• Recolección   de basura

• Conteo    de referencias

   • Conteo     de referencias automático
CONTEO DE
               REFERENCIAS
               AUTOMÁTICO
•Apartir de iOS 5 Apple introdujo el Automatic Reference
 Counting

• Libera al programador de tener que llamar a los métodos
 retain y release

     • Llamaa estos métodos cuando se asignan o liberan
      respectivamente
CONTEO DE
               REFERENCIAS
              AUTOMÁTICO 2

• Simplificala gestión de memoria casi al nivel de la
 recolección de basura

• Manteniendo   el rendimiento original
CONTEO DE
             REFERENCIAS
            AUTOMÁTICO 3

• Sinembargo sigue dependiendo del programador para
 ciertos casos concretos

• Existen unos casos denominados dependencias circulares o
 islas de memoria que requieren trabajo por parte del
 desarrollador
CONTEO DE
                 REFERENCIAS
                AUTOMÁTICO 4
 • Supongamos     que tenemos el siguiente caso:
                                 retainCount == 1

                                     Objeto 1



                     Objeto 2                       Objeto 3

                  retainCount == 1              retainCount == 1



• Todos los objetos están siendo referenciados por otro, sin
 embargo no están disponibles en el contexto actual de la
 aplicación

• Se   ha producido una perdida de memoria (Memory Leak)
CONTEO DE
             REFERENCIAS
            AUTOMÁTICO 5
• Para
     estos casos hay que diferencia dos tipos de
 propiedades

  • Propiedades  fuertes o strong que retienen el objeto al
   asignar la variable y la liberan cuando se dejan de usar

  • Propiedadesdébiles o weak que simplemente asignan el
   puntero en el setter por lo que no se rentendrá
CONTEO DE
               REFERENCIAS
              AUTOMÁTICO 6
  • Si
     en el ejemplo anterior una de las propiedades es weak
   tendriamos el siguiente escenario
                 retainCount == 1

                    Objeto 2        strong

                  strong                        Objeto 3

                                             retainCount == 0
                                    weak
                    Objeto 1

                 retainCount == 1



• Porlo tanto se liberaría el objeto 3 y despues los otros dos
 objetos
CONTEO DE
                REFERENCIAS
               AUTOMÁTICO 7
• Existe   un tercer tipo de propiedades denominadas copy o
 copia.

  • Estas   producen una copia del objeto en el setter

  • Sesuelen emplear en objetos como strings, numbers,
   arrays...

    • Siqueremos que una modificación no altere el valor
      cuando se hizo el set
FIN

Contenu connexe

Similaire à Ios.s3

Administración de memoria - arreglos estáticos y dinámicos
Administración de memoria - arreglos estáticos y dinámicosAdministración de memoria - arreglos estáticos y dinámicos
Administración de memoria - arreglos estáticos y dinámicosUVM
 
Patrones de Memory Leaks en Android
Patrones de Memory Leaks en Android Patrones de Memory Leaks en Android
Patrones de Memory Leaks en Android Mauricio Domenech
 
Curso de Sistemas Operativos - Unidad Procesos e Hilos
Curso de Sistemas Operativos - Unidad Procesos e HilosCurso de Sistemas Operativos - Unidad Procesos e Hilos
Curso de Sistemas Operativos - Unidad Procesos e HilosJuan Rafael Alvarez Correa
 
Rust: Una historia sobre manejo de memoria y Colectores de Basura
Rust: Una historia sobre manejo de memoria y Colectores de BasuraRust: Una historia sobre manejo de memoria y Colectores de Basura
Rust: Una historia sobre manejo de memoria y Colectores de BasuraSoftware Guru
 
Sistema operativo.ppt
Sistema operativo.pptSistema operativo.ppt
Sistema operativo.pptAngizon Vn'
 
Gestión de memoria, luis carlos silva dias 1ºsmr
Gestión de memoria, luis carlos silva dias 1ºsmrGestión de memoria, luis carlos silva dias 1ºsmr
Gestión de memoria, luis carlos silva dias 1ºsmrLuis Carlos Silva Dias
 
Tipos de memorias para microprocesadores
Tipos de memorias para microprocesadoresTipos de memorias para microprocesadores
Tipos de memorias para microprocesadoresKevin Barrera
 
Administración de memoria en java
Administración de memoria en javaAdministración de memoria en java
Administración de memoria en javaLuis Miguel De Bello
 
Codemotion 2021 - The Rustalorian: Este es el camino
Codemotion 2021 - The Rustalorian: Este es el caminoCodemotion 2021 - The Rustalorian: Este es el camino
Codemotion 2021 - The Rustalorian: Este es el caminoFrancisco Javier Barrena
 
Previo2- Dispos E/S
Previo2- Dispos E/SPrevio2- Dispos E/S
Previo2- Dispos E/SBertha Vega
 
Estructura de Almacenamiento en Oracle. TableSpaceZ052 07
Estructura de Almacenamiento en Oracle. TableSpaceZ052 07Estructura de Almacenamiento en Oracle. TableSpaceZ052 07
Estructura de Almacenamiento en Oracle. TableSpaceZ052 07Alexander Calderón
 
Pegandose con android
Pegandose con androidPegandose con android
Pegandose con androidcampusmilenio
 

Similaire à Ios.s3 (20)

Piramide memorias
Piramide memoriasPiramide memorias
Piramide memorias
 
Administración de memoria - arreglos estáticos y dinámicos
Administración de memoria - arreglos estáticos y dinámicosAdministración de memoria - arreglos estáticos y dinámicos
Administración de memoria - arreglos estáticos y dinámicos
 
Patrones de Memory Leaks en Android
Patrones de Memory Leaks en Android Patrones de Memory Leaks en Android
Patrones de Memory Leaks en Android
 
Administración de Memoria
Administración de MemoriaAdministración de Memoria
Administración de Memoria
 
Curso de Sistemas Operativos - Unidad Procesos e Hilos
Curso de Sistemas Operativos - Unidad Procesos e HilosCurso de Sistemas Operativos - Unidad Procesos e Hilos
Curso de Sistemas Operativos - Unidad Procesos e Hilos
 
Memoria dinamica
Memoria dinamicaMemoria dinamica
Memoria dinamica
 
Memorias
MemoriasMemorias
Memorias
 
Memoria caché (Explicación)
Memoria caché  (Explicación)  Memoria caché  (Explicación)
Memoria caché (Explicación)
 
Rust: Una historia sobre manejo de memoria y Colectores de Basura
Rust: Una historia sobre manejo de memoria y Colectores de BasuraRust: Una historia sobre manejo de memoria y Colectores de Basura
Rust: Una historia sobre manejo de memoria y Colectores de Basura
 
Sistema operativo.ppt
Sistema operativo.pptSistema operativo.ppt
Sistema operativo.ppt
 
Gestión de memoria, luis carlos silva dias 1ºsmr
Gestión de memoria, luis carlos silva dias 1ºsmrGestión de memoria, luis carlos silva dias 1ºsmr
Gestión de memoria, luis carlos silva dias 1ºsmr
 
ARQII_00-Repaso2.pdf
ARQII_00-Repaso2.pdfARQII_00-Repaso2.pdf
ARQII_00-Repaso2.pdf
 
Tipos de memorias para microprocesadores
Tipos de memorias para microprocesadoresTipos de memorias para microprocesadores
Tipos de memorias para microprocesadores
 
Administración de memoria en java
Administración de memoria en javaAdministración de memoria en java
Administración de memoria en java
 
Codemotion 2021 - The Rustalorian: Este es el camino
Codemotion 2021 - The Rustalorian: Este es el caminoCodemotion 2021 - The Rustalorian: Este es el camino
Codemotion 2021 - The Rustalorian: Este es el camino
 
Tunning Flex Apps
Tunning Flex AppsTunning Flex Apps
Tunning Flex Apps
 
Previo2- Dispos E/S
Previo2- Dispos E/SPrevio2- Dispos E/S
Previo2- Dispos E/S
 
ADMINISTRACIÓN DE MEMORIA.pptx
ADMINISTRACIÓN DE MEMORIA.pptxADMINISTRACIÓN DE MEMORIA.pptx
ADMINISTRACIÓN DE MEMORIA.pptx
 
Estructura de Almacenamiento en Oracle. TableSpaceZ052 07
Estructura de Almacenamiento en Oracle. TableSpaceZ052 07Estructura de Almacenamiento en Oracle. TableSpaceZ052 07
Estructura de Almacenamiento en Oracle. TableSpaceZ052 07
 
Pegandose con android
Pegandose con androidPegandose con android
Pegandose con android
 

Plus de ulcurbegi (15)

Proyecto LISFAB y Emprendimiento 4.0
Proyecto LISFAB y Emprendimiento 4.0Proyecto LISFAB y Emprendimiento 4.0
Proyecto LISFAB y Emprendimiento 4.0
 
Ios.s14
Ios.s14Ios.s14
Ios.s14
 
Ios.s13
Ios.s13Ios.s13
Ios.s13
 
Ios.s12
Ios.s12Ios.s12
Ios.s12
 
Ios.s11
Ios.s11Ios.s11
Ios.s11
 
Ios.s10
Ios.s10Ios.s10
Ios.s10
 
Ios.s9
Ios.s9Ios.s9
Ios.s9
 
Ios.s8
Ios.s8Ios.s8
Ios.s8
 
Ios.s7
Ios.s7Ios.s7
Ios.s7
 
Ios.s6
Ios.s6Ios.s6
Ios.s6
 
Ios.s5
Ios.s5Ios.s5
Ios.s5
 
Ios.s4
Ios.s4Ios.s4
Ios.s4
 
Ios.s2
Ios.s2Ios.s2
Ios.s2
 
Ios.s1
Ios.s1Ios.s1
Ios.s1
 
Ios.s15
Ios.s15Ios.s15
Ios.s15
 

Ios.s3

  • 1. 3 - GESTIÓN DE MEMORIA Curso de desarrollo de aplicaciones móviles para iPhone y iPad endika.gutierrez@urbegi.com alex.rayon@urbegi.com Urbegi Learning Contents
  • 2. CONTENIDO • Gestión de la Memoria • Alojamiento estático • Gestión manual de memoria • Recolección de basura • Conteo de referencias • Conteo de referencias automático
  • 3. CONTENIDO • Gestión de la Memoria • Alojamiento estático • Gestión manual de memoria • Recolección de basura • Conteo de referencias • Conteo de referencias automático
  • 4. GESTIÓN DE MEMORIA • Lagestión de memoria se conoce como el proceso de reserva y liberación dinámica de la memoria volatil, es decir, memoria RAM. • Entodo el transcurso de la informática se han dado diferentes aproximaciones para solucionar este problema
  • 5. GESTIÓN DE MEMORIA 2 • La gestión de memoria es un proceso susceptible a errores. • Una de las principales fuentes de fallos en tiempo de ejecución • Las diferentes aproximaciones tratan de simplificar este proceso y por tanto reducir los errores que se producen
  • 6. CONTENIDO • Gestión de la Memoria • Alojamiento estático • Gestión manual de memoria • Recolección de basura • Conteo de referencias • Conteo de referencias automático
  • 7. ALOJAMIENTO ESTÁTICO • Modelo de gestión de memoria de los primeros sistemas • Se reserva toda la memoria de manera estática a la carga de la aplicación y se libera toda ella al cierre de la aplicación • Empleada en los origines de la informática
  • 8. ALOJAMIENTO ESTÁTICO 2 • Presente en lenguajes antiguos como Basic o ensamblador • Ventajas • Manejo de memoria sencillo • Libre de errores • Desventajas • Poco óptimo, se desaprovecha mucha memoria • No permite estructuras de tamaño dinámico
  • 9. CONTENIDO • Gestión de la Memoria • Alojamiento estático • Gestión manual de memoria • Recolección de basura • Conteo de referencias • Conteo de referencias automático
  • 10. GESTIÓN MANUAL DE LA MEMORIA • Siguiente aproximación a la gestión de la memoria • Se permite la creación de bloques de memoria dinámicos • Esresponsabilidad del programador decidir donde se liberarán estos bloques • Inconveniente: Si un puntero es compartido por dos objetos, cuando se destruya uno de ellos no sabra si destruirlo o no
  • 11. GESTIÓN MANUAL DE LA MEMORIA 2 • Empleado en Lenguajes de más bajo nivel C/C++ • Este tipo de gestión de memoria se encuentra presente en iOS para la gestión de estructuras de C • Recordemos que Objective-C es un superconjunto de C
  • 12. GESTIÓN MANUAL DE LA MEMORIA 3 • Ventajas • Permite la reserva dinámica de memoria • Elmétodo más eficiente, no se desperdicia memoria ni tiempo de ejecución. • Desventajas • Haceresponsable al programador de destruir los objetos creados. • Es el más propenso a errores
  • 13. CONTENIDO • Gestión de la Memoria • Alojamiento estático • Gestión manual de memoria • Recolección de basura • Conteo de referencias • Conteo de referencias automático
  • 14. RECOLECCIÓN DE BASURA • Trata de abstraer al programador de la gestión de la memoria • Basado en un proceso denominado Recolector de Basura encargado de buscar y liberar los bloques de memoria que no se estén usando. • Presente en los lenguajes interpretados y Java
  • 15. RECOLECCIÓN DE BASURA 2 • Ventajas • Asegura el uso eficiente de la memoria • El programador se abstrae completamente de la gestión de la memoria • Desventajas • Impacto en el rendimiento ya que se tiene que ejecutar el recolector de basura • Existe una cierta latencia en la liberación de la memoria
  • 16. CONTENIDO • Gestión de la Memoria • Alojamiento estático • Gestión manual de memoria • Recolección de basura • Conteo de referencias • Conteo de referencias automático
  • 17. CONTEO DE REFERENCIAS • Detodas las alternativas para la gestión de la memoria Objective-C opta por el conteo de referencias
  • 18. CONTEO DE REFERENCIAS 2 • Basado en un contador asociado a cada bloque de memoria • Este cuenta el número de variables que referencian al objeto • Porlo tanto, cuando el contador llega a 0 el objeto se libera automáticamente • Cada vez que se asigna un objeto a la variable se llama al método retain y cada vez que se deja de referenciar se llama al método release
  • 19. CONTEO DE REFERENCIAS 3 • Ventajas • Solucionaalgunos de los problemas que presenta la gestión de memoria manual. • Si un objeto es compartido se liberar cuando ningun objeto lo reuquiera • Eficienteen cuanto a tiempo de proceso ya que no necesita ningún proceso externo
  • 20. CONTEO DE REFERENCIAS 4 • Desventajas • Sigue delegando responsabilidad en el desarrollador • Si se olvida un retain puede dar errores de acceso • Si se olvida un release quedan bloques sin liberar • Se tiene que mantener un entero por cada objeto con el proposito de almacenar el contador
  • 21. CONTENIDO • Gestión de la Memoria • Alojamiento estático • Gestión manual de memoria • Recolección de basura • Conteo de referencias • Conteo de referencias automático
  • 22. CONTEO DE REFERENCIAS AUTOMÁTICO •Apartir de iOS 5 Apple introdujo el Automatic Reference Counting • Libera al programador de tener que llamar a los métodos retain y release • Llamaa estos métodos cuando se asignan o liberan respectivamente
  • 23. CONTEO DE REFERENCIAS AUTOMÁTICO 2 • Simplificala gestión de memoria casi al nivel de la recolección de basura • Manteniendo el rendimiento original
  • 24. CONTEO DE REFERENCIAS AUTOMÁTICO 3 • Sinembargo sigue dependiendo del programador para ciertos casos concretos • Existen unos casos denominados dependencias circulares o islas de memoria que requieren trabajo por parte del desarrollador
  • 25. CONTEO DE REFERENCIAS AUTOMÁTICO 4 • Supongamos que tenemos el siguiente caso: retainCount == 1 Objeto 1 Objeto 2 Objeto 3 retainCount == 1 retainCount == 1 • Todos los objetos están siendo referenciados por otro, sin embargo no están disponibles en el contexto actual de la aplicación • Se ha producido una perdida de memoria (Memory Leak)
  • 26. CONTEO DE REFERENCIAS AUTOMÁTICO 5 • Para estos casos hay que diferencia dos tipos de propiedades • Propiedades fuertes o strong que retienen el objeto al asignar la variable y la liberan cuando se dejan de usar • Propiedadesdébiles o weak que simplemente asignan el puntero en el setter por lo que no se rentendrá
  • 27. CONTEO DE REFERENCIAS AUTOMÁTICO 6 • Si en el ejemplo anterior una de las propiedades es weak tendriamos el siguiente escenario retainCount == 1 Objeto 2 strong strong Objeto 3 retainCount == 0 weak Objeto 1 retainCount == 1 • Porlo tanto se liberaría el objeto 3 y despues los otros dos objetos
  • 28. CONTEO DE REFERENCIAS AUTOMÁTICO 7 • Existe un tercer tipo de propiedades denominadas copy o copia. • Estas producen una copia del objeto en el setter • Sesuelen emplear en objetos como strings, numbers, arrays... • Siqueremos que una modificación no altere el valor cuando se hizo el set
  • 29. FIN

Notes de l'éditeur

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n