Tecnología

Inicio

Teoría y Práctica de Java: Colección de basura en el 1.4.1 JVM

Los desarrolladores de Java creado con dos objetivos principales en mente. En primer lugar, para crear un lenguaje de programación construido en su totalidad después de un paradigma orientado a objetos. En segundo lugar, hacer que el lenguaje Java se ejecutan en la parte superior de la máquina virtual de Java (JVM) asegurar la portabilidad entre plataformas. Debido a que Java corriendo en la JVM y no lo han conectado directamente con el hardware, la JVM podría manejar muchos de los problemas inherentes a la programación orientada a objetos, es decir, la gestión de memoria. El proceso a través del cual la JVM maneja la memoria se llama "recolección de basura". Para entender la colección, un programador tiene que entender los conceptos de programación orientada a objetos, incluyendo cómo se gestiona la memoria.

Programación orientada a objetos

La programación orientada a objetos (POO) representa un paradigma de programación en el que los programadores crear datos de "objetos", como parte de su código. Los programadores usan estos objetos para representar tipos de datos complejos que contienen tanto un estado y que exhiben ciertos comportamientos. Así, por ejemplo, un programador crea una clase "Esfera" para un programa que hace de trabajo que incluye el cálculo de las esferas. La clase Esfera podría contener datos para un radio (su estado) y una función para calcular su propia área (su comportamiento).

Objetos y Memoria

Java y C ++ son lenguajes de programación orientada a objetos. Sin embargo, la diferencia entre los dos ilustra la necesidad de recolección de basura en Java. En C ++, un programador trata directamente con el sistema operativo. Esto significa que cuando un programador desea crear un objeto, que puede hacer una de dos cosas. En primer lugar, se puede crear una copia de "superficial" durante el proceso de codificación. En segundo lugar, y más común, puede escribir código que crea los objetos de forma dinámica en la memoria "profunda" durante la ejecución de código mediante el uso de "punteros".

Punteros y pérdidas de memoria

Un programa en C ++ utiliza punteros para asignar memoria durante la ejecución de código. A "puntero" contiene una referencia a una ubicación de memoria. Cuando un programador necesita para diseñar código que crea los objetos en tiempo de ejecución, que utiliza punteros para hacer referencia a la memoria reservada para la creación de objetos. Eso puntero es entonces la única cosa que hace referencia a ese objeto. En caso de que el programa de mover el puntero de referencia durante la ejecución, el objeto "señaló que" se puede utilizar no más. Simplemente se sienta en la memoria y no hay forma de acceder a ella. Cuando grandes cantidades de objetos se crean a través de punteros y se dejan en la memoria debido a la pérdida de referencia de puntero, esto se conoce como una "pérdida de memoria" y puede causar graves problemas en un programa.

Recolección de basura

En C ++, la responsabilidad de la gestión de la memoria y la prevención de pérdidas de memoria recae directamente sobre el programador. El lenguaje Java, a diferencia de C ++, se ejecuta en la JVM, abstraído del sistema operativo. Debido a esto, el programador puede ignorar la gestión de la memoria del sistema en lo que respecta objetos. Por el contrario, la JVM tiene tablas sobre los objetos y las referencias existentes, y elimina los que ya no están en uso. De esta manera, la tarea de gestionar la memoria cae en la JVM, y el programador puede trabajar en diferentes tareas, mientras que confía en que la gestión de memoria es atendido.

Recolección de Basura y la 1.4.1 JVM

La versión 1.4.1 de la JVM ofrece un modelo para la recolección de basura. La JVM utiliza un paradigma división de edad, mientras que los objetos "jóvenes" y "viejos" objetos existe en la memoria. La JVM puede promover objetos pequeños a objetos antiguos basados ​​en la frecuencia con los objetos pequeños se copian durante la ejecución del programa. Objetos antiguos, a continuación, se consideran importantes y, por lo tanto, no marcado para su eliminación. El sistema de recolección de basura 1.4.1 JVM utiliza un método de "tren" de la recolección / eliminación, al permitir el aumento de la recolección de basura pequeña pasa, en lugar de las colecciones más lentas de mayor tamaño. Además, la JVM 1.4.1 se aprovecha de los sistemas de multiprocesamiento, ofreciendo la recogida de basura simultánea en varios procesadores.