quinta-feira, 22 de julho de 2010

Gerenciamento de memória e garbage Collector

O gerencimaneto de memória

Podemos definir o gerenciamento de memória como um conjunto de algoritmos que gerenciam a memória de forma que esta seja utilizada da melhor forma possível, permitindo que todos os programas executados tenham a quantidade de memória necessária para a sua perfeita execução. Antigamente ao se desenvolver sistemas os programadores eram obrigados a programar pensando neste gerenciamento, na alocação e liberação da memória manualmente, o que dificultava o desenvolvimento de softwares de qualidade e acabava gerando muitos erros. Felizmente na maioria das plataformas de desenvolvimento atuais temos este gerenciamento automático, fazendo com que o programador não precise se preocupar com isso, mas sim com fatores mais importantes, como questões mais especificas sistema a ser desenvolvido.



O gerenciamento de memória em Java(JVM) - garbage Collector


Na JVM o Garbage Collector(GC) é um dos principais componentes, pois ele faz a liberação de memória que não esta sendo utilizada.
Quando a aplicação libera as referências para algum objeto, esse objeto passa a ser considerado
lixo e poderá ser coletado pelo GC a qualquer momento. Mas não conseguimos determinar o momento em que essa coleta irá ocorrer, isso depende totalmente do algoritmo do garbage collector. E em geral, o GC não fará coletas para cada objeto liberado: ele
vai deixar o lixo acumular um pouco para fazer coletas maiores, de maneira a otimizar
o tempo gasto. Isso é inclusive considerado muito melhor em performance e não fragmentação da memória que um programa que faz gerenciamento manual de memória e acaba liberando os espaços assim que ficam disponíveis.
Esta coleta é feita de tempos em tempos coletando vários de uma vez. Normalmente,
a primeira ideia que aparece ao se pensar em GC, é que ele fica varrendo a memória de
tempos em tempos e libera aqueles objetos que estão sem referência. Um pensamento
desse tipo é a base de um algoritmo famoso de GC chamado de Mark-And-Sweep. Esse algoritmo é constituído de duas fases: na primeira, o GC percorre a memória
e marca todos os objetos acessíveis; na segunda, ele varre novamente a memória coletando os objetos não marcados.

Existem uma série de algoritmos que o Garbage Collector utiliza, e alguns que podem ser utilizados especificamente com aplicações utilizando threads entre outras aplicação. Para maiores detalhes, segue abaixo alguns links, que serviram de base para esta muito breve explicação.

Link com a Comparação de Estratégias de Alocação de Memória:
http://www.ibm.com/developerworks/br/library/l-memory/

PDF que explica um pouco mais afundo o Garbage Collector e o gerenciamento de memória
Gerenciamento_de_memoria_nao_e_Simples.PDF

Nenhum comentário:

Postar um comentário