No campo da tecnologia da informao, o gerenciamento de memria um tema que tem muita importncia, uma ateno especial voltada a ele, vrias tcnicas so constantemente desenvolvidas para a sua melhora. Os programadores necessitam de mais memria a cada dia, a necessidade de ter vrios programas sendo executados ao mesmo tempo tambm aumenta, e com esse aumento vrios requisitos podem perder qualidade, como o desempenho. A memria de um computador no infinita, e quando a memria no tem mais espao disponvel ocorrem erros. O gerenciamento de memria essencialmente formado pela alocao e reciclagem da memria:
1. Alocao da Memria: Acontece quando o programa, que est sendo executado, requisita um bloco de memria, o gerenciador por sua vez, disponibiliza o bloco de memria para a alocao desejada.
1.1 Alocao Esttica: Bloco de memria alocado quando o programa compilado, comandado pelo sistema operacional, que ao ler o programa, reserva o bloco de memria desejado.
1.2 Alocao Dinmica: A alocao feita quando o programa executado, a memria reservada para a alocao dinmica chamada de heap, em linguagens que no tem o gerenciamento automtico de memria, como a linguagem C, existem vrios mtodos de organizar o heap. Em outras linguagens o gerenciamento automtico, como na linguagem Java, esse gerenciamento automtico chamado de Garbage Collector (Coletor de lixo), assunto que ser tratado posteriormente.
2. Reciclagem da Memria: Depois que um bloco da memria alocado, e no ser mais utilizado, no tendo mais nenhuma referncia a ele pelo programa, esse bloco pode ento ser liberado, sendo liberado poder ser utilizado novamente, ficando assim livre e a disposio novamente do programa que est sendo executado.
2.1 Reciclagem Interna: Quando os blocos de memria, chamados de pgina, no so ocupados por completo pelo processo a eles destinado, gerado assim um espao que no est sendo utilizado e poder, se liberado, ser utilizado novamente.
2.2 Reciclagem Externa: Quando os programas vo sendo finalizados, deixam lacunas entre as pginas criadas, se essas lacunas forem muito pequenas, o suficiente para que o que precisa ser escrito na memria no caiba nela, essas lacunas ficam inutilizadas.
A paginao um processo virtual da memria, que divide a memria fsica em frames (pequenas parties), permitindo assim, uma utilizao mais eficiente da mesma. Quando uma alocao de memria solicitada, so pginas que so liberadas, que a menor unidade desse processo. Cada pgina mapeada em uma frame, chamado assim de paginao.
Gerenciamento Manual de Memria
O programador responsvel de especificar explicitamente, quando e como a memria ser alocada, mudando assim a configurao do programa de acordo com a sua necessidade e (ou) vontade. Nesse modelo de gerenciamento, problemas conhecidos como vazamentos de memria podem ocorrer, tais problemas ocorrem quando um bloco da memria alocado, e mesmo que no seja mais til, no liberado, mantendo assim o seu uso, desperdiando um espao que poderia ser utilizado por outro processo, que esteja sendo executado. Gerenciamento Automtico
Conhecido como Garbage Collector, libera os blocos da memria que no esto mais sendo utilizados automaticamente. O bom conhecimento sobre esse tema muito importante para desenvolver programas com alto desempenho, pois se um programa forar o sistema operacional a usar a memria virtual, seu desempenho no ser muito eficiente. O Garbage Collector libera o programador de ter que gerenciar a memria do programa, no precisando assim, o programador, de ficar atento aos detalhes do gerenciamento de memria, pois ele j faz isso de forma automtica, reduzindo ou at eliminando possveis defeitos dos softwares desenvolvidos, se tratando de uma tcnica mais confivel. A regio da memria pode ser liberada mais de uma vez, diminuindo assim a possibilidade de ocorrer um esgotamento de memria. Para decidir quais blocos da memria podem ou no ser liberados, o Garbage Collector usa processos que consomem recursos computacionais, diminuindo assim o desempenho do programa, devido sobrecarga do seu uso. E tambm deixa o programador desatento aos detalhes de memria. A liberao automtica de memria ocorre atravs de algoritmos. Existem vrias estratgias para isso, que dependendo do programa criado podem ser vantajosos ou desvantajosos, apresentando impacto direto no desempenho. O objetivo desses algoritmos garantir a identificao precisa de todos os ponteiros e a reciclagem de toda a memria inutilizada. Dentre os algoritmos de gerenciamento de memria automtica, podemos citar como os mais conhecidos: Reference counting algorithm (Collins 1960); Cycle collecting algorithm (Bobrow 1980); Mark and sweep algorithm (McCarthy 1960); Copying algorithm (Cheney 1970).
Referncias: PINTO, Flvio; LUNA, Hedley. Gerenciamento de Memria em Java. http://www.devmedia.com.br/desmistificando-o-garbage-collector/5451 http://pt.scribd.com/doc/73307165/25/Gerenciamento-manual-de-memoria