ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

MEMORY MANGEMENT Basic Garbage Collection


Enviado por   •  31 de Marzo de 2019  •  Ensayos  •  2.623 Palabras (11 Páginas)  •  95 Visitas

Página 1 de 11

MEMORY SEGMENTS & MEMORY MANGEMENT

Hugo Edibray Becerra Gándara

Contenido

Introducción        3

MEMORY SEGMENTS        4

MEMORY MANGEMENT        4

Basic Garbage Collection        4

Memory Allocation and Management        5

STACKS AND HEAPS        5

PAGES, VALID POINTER DETECTION AND MEMORY COMPACTING        5

GARBAGE COLLECTORS        6

MEMORY MANGEMENT        6

Overview        6

Garbage Collection        6

Creating Your Own Smart Pointer Type        7

Other Smart Pointers        8

Manual Memory Management with new, delete etc.        8

Errores comunes        8

Use de typedef        8

Conclusion        9

Bibliografía        10

Introducción

En este ensayo se tocarán temas como la memoria, los recolectores de basura, los problemas que puede traer no saber manejar manualmente la memoria, los apuntadores inteligentes y como crear uno y como es que la memoria funciona sin nosotros darnos cuenta, por lo que podría ser un poco tedioso, sin embargo es importante saber todo lo antes mencionado pues siempre es bueno(sin importar que nunca lo vayamos a usar) saber toda la información posible de los lenguajes de programación, aunque claro, nunca sabremos manejar al 100% un lenguaje de programación.

MEMORY SEGMENTS

Ésta primera lectura empieza hablándonos sobre la arquitectura “Von Neumann” la cual tiene la memoria dividida en 2: Texto y Segmentos de datos, aunque en la actualidad hay más de sólo 2 segmentos, dependiendo de la “storage class” de la información que está siendo almacenada ahí. Hay 4 segmentos los cuales se dividen en:

  • El segmento del código, también conocido “text segment” o segmento de texto el cual contiene las instrucciones del programa. Nos cuenta la historia de lo que el programa hace, por lo cuál es de suma importancia.
  • El segmento de datos el cual contiene los datos estáticos del programa, o sea, las variables que existen durante la ejecución del programa, por lo que yo pienso que al contener las variables es de suma importancia que no se corrompa.
  • “The Stack Segmente”, el cual contiene “the system stack”, que es usado como almacenamiento temporal. El “Stack” es una simple estructura de datos con una política de acceso LIFO (Last-in first-out) lo que quiere decir que los primeros en entrar serán los primeros en salir. Mejor dicho, los ítems que se añadan o que se quiten solo serán removidos de la cabeza del stack. Lo que capté de este segmento es que es como una clase de vector.
  • “The heap segment” (heap significa monticulo) es un montón de memoria usada para asignar dinámicamente la memoria, tal como sucede en C++ o java

Lo que comprendo y entiendo de este pequeño texto es que las arquitecturas hoy por hoy dividen la memoria en 4 espacios, y que por esto nos resulta fácil trabajar programando, aunque no sé si esto afecte la manera en la que se trabaja por ejemplo: en un equipo un poco humilde a otro equipo más caro, ya que uno tiene más memoria que el otro y así el que tiene menos memoria podría ser más lento y por lo tanto significar perdida de tiempo y en caso de que hablemos de una empresa, de dinero.

MEMORY MANGEMENT

Basic Garbage Collection

Primero se haba de la memoria y como se gestione, diciéndonos lo que sabemos sobre que se tiene que asignar memoria antes de poder ejecutar una aplicación, y cuando termine devolver dicha memoria.

Hay varias maneras de administrar la memoria, implícita y explícitamente:

La primera es aquella que se asigna cuando creas una variable, la cuál es demasiado útil y te ahorra tiempo, mientras que la explicita se produce a través de punteros y llamadas a las funciones, lo cual resultar un poco más tedioso, pero considero que es una buena práctica de programación

Los recolectores de basura son sistemas (o subsistemas) que se utilizan para administrar la memoria dinámica automáticamente. Aunque el proceso para hacer que funcionen en un principio parecería tedioso y largo, sólo tenemos que llamar una función del gc que se llama “gc_malloc” y durante la ejecución del programa se realiza el proceso para al final liberar memoria gracias al GC. Hay 3 tipos de recolector de basura:

  • El de recuento de frecuencias: éste lo que hace es que mediante conteos a objetos por punteros aumenta el conteo, y mientras sea un entero positivo, se hace referencia activa al objeto y “está vivo”. Mientras que cuando se elimina una referencia al objeto, el conteo disminuye y si llega a 0 “está muerto”. Considero que es muy práctico y que no nos pide hacer trabajo de más.
  • Por otro lado, tenemos el rastreador el cuál siento que es menos práctico y a mí en lo personal es el que menos me gusta
  • Y por último los híbridos que emplean recuentos de referencia en objetos muy grandes para garantizar que se recupere rápidamente.

Memory Allocation and Management

STACKS AND HEAPS

Existen dos tipos de memoria: Stack y Heaps

Stack: Se utiliza para proveer frames, un frame es una manera de localizar información sobre subrutinas(la cual tiene que tener en su frame la dirección de retorno). Todo el proceso que implica la creación de frames en el stack, es manejado por el compilador, por lo que nosotros como programadores no estamos conscientes de ellos, sin embargo, es bueno conocerlo y tomarlo en cuenta al momento de programar.

HEAPS: El “heap” es un área de memoria asignada dinámicamente que es administrada automáticamente por el sistema operativo o la biblioteca del administrador de memoria. La memoria en el “heap” se asigna y se desasigna y ajusta su tamaño durante la ejecución del programa y esto nos puede llevar a un problema que se llama fragmentación. Ésta se produce cuando no se asigna el suficiente espacio entre objetos de memoria.

Considero que este último es un riesgo por considerar al momento de hablar y usar los heaps como tipo de memoria.

...

Descargar como (para miembros actualizados)  txt (15.8 Kb)   pdf (153.2 Kb)   docx (16.8 Kb)  
Leer 10 páginas más »
Disponible sólo en Clubensayos.com