Ios.s3

452 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
452
On SlideShare
0
From Embeds
0
Number of Embeds
96
Actions
Shares
0
Downloads
5
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Ios.s3

    1. 1. 3 - GESTIÓN DE MEMORIACurso de desarrollo de aplicaciones móviles para iPhone y iPad endika.gutierrez@urbegi.com alex.rayon@urbegi.com Urbegi Learning Contents
    2. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 17. CONTEO DE REFERENCIAS• Detodas las alternativas para la gestión de la memoria Objective-C opta por el conteo de referencias
    18. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 29. FIN

    ×