Este documento describe los conceptos de memoria estática y dinámica en los sistemas de computación. Explica que la memoria estática es asignada por el compilador para elementos fijos del programa, mientras que la memoria dinámica es asignada y liberada dinámicamente durante la ejecución. También cubre temas como la asignación de memoria, el uso de pilas y colas, y el recolector de basura.
En esta presentación cubrimos el modelo de memoria del JDK 5/6/7, a partir de JDK 8 hay un cambio en el modelo de memoria, así que no toda la presentación seria valida, aunque algunos conceptos se mantienen.
Los ejemplos se pueden encontrar en https://github.com/ldebello/javacuriosities/tree/master/MemoryManagement
ESTRUCTURA DE DATOS: MEMORIA ESTATICA
La memoria estática es la que no se puede modificar o ejecutar en momento de ejecución. También se debe conocer con anticipo el tamaño de la estructura que está en ejecución.
ITESZ
En esta presentación cubrimos el modelo de memoria del JDK 5/6/7, a partir de JDK 8 hay un cambio en el modelo de memoria, así que no toda la presentación seria valida, aunque algunos conceptos se mantienen.
Los ejemplos se pueden encontrar en https://github.com/ldebello/javacuriosities/tree/master/MemoryManagement
ESTRUCTURA DE DATOS: MEMORIA ESTATICA
La memoria estática es la que no se puede modificar o ejecutar en momento de ejecución. También se debe conocer con anticipo el tamaño de la estructura que está en ejecución.
ITESZ
Tecnológico Nacional de México
Ingeniería en Sistemas Computacionales
Estructura de datos
Unidad 1: Introducción a las estructuras de datos
Retícula ISIC-2010-224: Programa: AED-1026;
2. Casos de uso y diagramas de casos de usoSaul Mamani
Tutorial detallado de los casos de uso y los diagramas de casos de suso en UML 2.
Si tienes problemas para ver la presentación, lo puedes descargar de aquí...
https://drive.google.com/folderview?id=1-1ypq1SSRLCjL2USp0iAIaBMcSNoEzub
Esta presentación es parte del contenido del curso de Programación Avanzada impartido en la Universidad Rafael Landívar durante el año 2015.
Incluye los temas:
• POO - atributos y métodos
Creado por Ing. Alvaro Enrique Ruano
Tecnológico Nacional de México
Ingeniería en Sistemas Computacionales
Estructura de datos
Unidad 1: Introducción a las estructuras de datos
Retícula ISIC-2010-224: Programa: AED-1026;
2. Casos de uso y diagramas de casos de usoSaul Mamani
Tutorial detallado de los casos de uso y los diagramas de casos de suso en UML 2.
Si tienes problemas para ver la presentación, lo puedes descargar de aquí...
https://drive.google.com/folderview?id=1-1ypq1SSRLCjL2USp0iAIaBMcSNoEzub
Esta presentación es parte del contenido del curso de Programación Avanzada impartido en la Universidad Rafael Landívar durante el año 2015.
Incluye los temas:
• POO - atributos y métodos
Creado por Ing. Alvaro Enrique Ruano
La teoría de Piaget ayuda a los educadores a entender como el niño interpreta el mundo. La teoría de Vygotsky ayuda a comprender los procesos sociales que influyen en la adquisición de las habilidades intelectuales. El constructivismo es el fundamento de las reformas educativas.
Mi presentación en el Encuentro Universitario Comunidad Java Dominicano 2018 #EncuentrosUniversitariosJava2018
@ UASD Recinto Santiago, Santiago de los caballeros. 15 consejos prácticos sobre características fundamentales que todo programador Java debe tener en cuenta.
Java fundamentos -15 consejos practicos open saturday 2018Eudris Cabrera
Mi presentación en el Open Saturday Santiago 2018 @ UAPA, Santiago de los caballeros. 15 consejos prácticos sobre características fundamentales que todo programador Java debe tener en cuenta.
PARADIGMAS FP Y OOP USANDO TÉCNICAS AVANZADAS DE PROGRAMACIÓN ASÍNCRONAVíctor Bolinches
02/03/2017
Charla Universidad Politécnica de Valencia - https://www.upv.es/
Asingnatura : Auditoria, Calidad y Gestion de Sistemas de Información (ACG)
Máster Universitario en Ingeniería Informática - https://www.upv.es/titulaciones/MUIINF/
Mi presentación en el ITLA Tech Day 2018 #ITLATechDay #EncuentrosUniversitariosJava2018 #Java
@ ITLA Recinto Santiago, Santiago de los caballeros. 15 consejos prácticos sobre características fundamentales que todo programador Java debe tener en cuenta.
Introducción a la programación en c++.
Contenido:
-Tipos de datos
-Entrada y salida por consola
-String
-Preprocesador
-Operadores y sentencias de control
-Punteros
-Arrays
-Cadenas de caracteres
-Memoria dinámica
-Introducción a la POO en c++
-Referencias
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