Sunteți pe pagina 1din 8

Autor:

Santiago
Alulema

Que es la memoria?
La memoria es la parte utilizada por los sistemas informticos para almacenar
informacin en tiempo de ejecucin, o sea estamos hablando de memoria voltil, por lo
cual su contenido se pierde cuando se apaga el equipo.
Quin esta a cargo del manejo de la memoria en Java?
La JVM (Java Virtual Machine) es la encargada de ejecutar nuestros programas Java,
pero a su vez es la que esta a cargo de reservar, asignar y liberar la memoria utilizada
por nuestra aplicacin.
La arquitectura de la JVM contiene diversas partes las cuales cumplen distintos
objetivos al referirnos al manejo de memoria debemos mencionar estamos hablando
del rea llamada Runtime Data Areas.
Estructura de la JVM

reas de memoria (Runtime Data Areas)

Tipos de Memoria
En Java podemos hablar de tres zonas de memoria:

La ZONA DE DATOS, donde se almacenan las instrucciones del programa, las


clases con sus mtodos y constantes. Esta zona es inmutable durante todo el periodo
de ejecucin del programa.

La memoria HEAP, donde se almacenan las variables que se crean en los


programas con la sentencia "new". Esta zona de memoria es dinmica e ir creciendo
conforme se vayan creando objetos desde nuestro programa.

La memoria STACK, donde se almacenan los mtodos y las variables locales


que se crean dentro de los mismos. Esta zona de memoria es esttica y no se
modifica durante el desarrollo del programa. Cada vez que un mtodo se llama se
coloca al comienzo de la pila y se almacenar informacin como el nmero de la lnea
que se est ejecutando as como todos los valores de las variables locales. Los
Threads o Hilos tienen su propia pila de llamadas. Un error que nos puede ocurrir es
que
al
ejecutar
nuestro
programa
obtengamos
la
excepcin
java.lang.OutOfMemoryException por un StackOverflow. La causa podra ser por
ejemplo que estamos realizando una llamada recursiva y no hayamos implementado
correctamente la condicin de parada.

Diferencias entre memoria STACK y HEAP (Imagen: prietopa)

STACK Y HEAP
Por lo que puede deducirse de las definiciones, el Stack y el Heap estn
estrechamente relacionados, ya que los objetos a los que apuntan las referencias
almacenadas en el Stack se habrn creado en el Heap.

En la quinta linea se crea la referencia miObjeto en el Stack y en la sexta se crea el


objeto new MiClase en el Heap y se enlaza miObjeto a ella. Si la referencia
miObjeto apunta a otro objeto que se asigne en otro momento, el enlace anterior
quedar roto y el objeto que se encuentra en el Heap no ser enlazado por nadie
( Est consumiendo espacio en la memoria y no se hace uso de l).
Tiene que quedar claro que la relacin referencia-objeto es de n-1, lo que quiere decir
que un objeto puede ser apuntado por muchas referencias, pero que una referencia
apunta a un solo objeto.

Ligadura Dinmica y Ligadura Esttica


Ligadura Esttica
Consiste en realizar el proceso de ligadura en tiempo de compilacin segn el tipo
declarado del objeto al que se manda el mensaje.
La utilizan (en Java) los mtodos de clase y los mtodos de instancia que son privados
o final (ya que estos ltimos no pueden ser sobrescritos).
Public static int factorial (int n){
If (n==0)
Return1;
Else
Return n*factorial(n-1);
}
Ligadura Dinmica
Consiste en realizar el proceso de ligadura en tiempo de ejecucin siendo la forma
dinmica del objeto la que determina la versin del mtodo a ejecutar.
Se utiliza en todos los mtodos de instancia de java que no son privados ni final.

mbito de vida
El mbito de una variable u objeto es el espacio del programa en el que esa variable
existe. Por ello, se habla de mbito de vida
De forma general (hay excepciones que veremos ms adelante), la vida de una
variable comienza con su declaracin y termina en el bloque en el que fue declarada
(los bloques de cdigo se delimitan por llaves: {}).
Por ejemplo, cul es el mbito de la variable radio y del vector args?:

Tipos de mbito
Ya vimos que el mbito de una variable u objeto es el espacio del programa en el
que esa variable existe. Por ello, se habla de mbito de vida
Los principales tipos de mbitos son:
mbito de objeto. Los atributos de un objeto (que no son static) viven en el espacio de
vida del objeto y son accesibles por cualquier mtodo del objeto (siempre que el
mtodo no sea static). Por ello, a veces se llaman variables de objeto o variables de
instancia
mbito de mtodo. Variables y objetos declarados en un mtodo. Su mbito de vida
se cie al mtodo en el que fueron declaradas, por ello a veces se llaman variables de
mtodo o funcin mbito de clase. Las variables static viven con independencia de
que hayamos hecho instancias de la clase. Podemos acceder a ellas (si son pblicas)
usando el nombre de la clase y viven desde que se declara la clase, por ello se llaman
variables de clase.

mbito de clase y de mtodo

mbito de clase
Las variables static viven con independencia de que hayamos hecho instancias de la
clase
Podemos acceder a ellas (si son pblicas) usando el nombre de la clase (no hay que
hacer instancias) y viven desde que se declara la clase, por ello se llaman variables de
clase. Ejemplo:

S-ar putea să vă placă și