Desenvolvedores Java criado com dois objetivos principais em mente. Em primeiro lugar, para criar uma linguagem de programação totalmente construído seguindo um paradigma orientado a objetos. Em segundo lugar, para tornar a linguagem Java corrida em cima do Java Virtual Machine (JVM) garantindo portabilidade entre plataformas . Porque Java correu na JVM e não interagir diretamente com o hardware , a JVM pode gerenciar muitos dos problemas inerentes à programação orientada a objetos , ou seja, o gerenciamento de memória . O processo através do qual a JVM tratado memória é chamado de " coleta de lixo ". Para entender coleção, um programador precisa entender os conceitos de programação orientada a objetos , incluindo como a memória é gerenciada. Programação Orientada a Objetos
programação orientada a objetos (OOP ) representa um paradigma de programação na qual programadores criar dados "objetos" como parte de seu código. Programadores usar esses objetos para representar tipos de dados complexos que contêm um estado e apresentam determinados comportamentos. Assim, por exemplo , um programador cria uma classe " Sphere " para um programa que faz o trabalho que envolve cálculos de esferas. A classe Sphere pode conter dados para um raio ( seu estado ) e uma função para calcular a sua própria área ( seu comportamento ) .
Objetos e Memória
Java e C + + são linguagens OOP . No entanto , a diferença entre os dois ilustra a necessidade de recolha de lixo em Java . Em C + +, um programador de negócios diretamente com o sistema operacional. Isto significa que quando um programador deseja criar um objeto, ela pode fazer uma de duas coisas . Primeiro, ela pode criar uma cópia "superficial " durante o processo de codificação. Segundo, e mais comum , ela pode escrever código que cria objetos dinamicamente na memória "profunda " durante a execução de código através do uso de " ponteiros ".
Ponteiros e Memory Leaks
Um programa C + + usa ponteiros para alocar memória durante a execução do código. A " ponteiro " contém uma referência a uma posição de memória . Quando um programador precisa para projetar um código que cria objetos durante o tempo de execução , ele usa ponteiros para referenciar memória reservada para criação do objeto. Esse ponteiro é então a única coisa que faz referência a esse objeto. Se o programa de mover o ponteiro de referência durante a execução , o objeto " apontou para " não pode mais ser usado. Ele simplesmente se senta na memória com nenhuma forma de acessá-lo. Quando grandes quantidades de objetos são criados através de ponteiros e deixou na memória devido à perda de referência de ponteiro , isto é conhecido como um " vazamento de memória " e pode causar sérios problemas em um programa.
Coleta de Lixo
C + +, a responsabilidade de gerir a memória e prevenir vazamentos de memória recai sobre o programador. A linguagem Java , ao contrário de C + +, é executado na JVM , captada a partir do sistema operacional. Por causa disto, o programador pode ignorar a gestão de memória do sistema no que diz respeito objectos . Pelo contrário, a JVM mantém o controle sobre objetos e referências existentes e exclui aqueles que não estão mais em uso. Dessa forma, a tarefa de gerenciar memória cai sobre a JVM , eo programador pode trabalhar em diferentes tarefas ao mesmo tempo confiante de que o gerenciamento de memória é cuidado .
Coleta de Lixo ea 1.4.1 JVM < br >
a versão 1.4.1 do JVM oferece um modelo para coleta de lixo . A JVM usa um paradigma divisão idade , ao passo que os objetos "jovens" e objetos "velhos" existe na memória . A JVM pode promover novos objetos para objetos antigos com base em como muitas vezes os jovens objetos são copiados durante a execução do programa. Objetos antigos, então, são considerados importantes e , portanto, não marcado para exclusão. O sistema de coleta de lixo da JVM 1.4.1 usa um método de "trem " de recolha /exclusão , permitindo aumentar a coleta de lixo pequeno passa ao invés de coleções maiores, mais lentas. Além disso, a 1.4.1 JVM tira proveito de sistemas de multiprocessamento , oferecendo coleta de lixo simultânea em vários processadores .