quinta-feira, 22 de julho de 2010

Gerência de memória Java

O sistema de gestão de memória do JAVA foi desenvolvido a fim de facilitar no processo de desenvolvimento e execução das aplicações. Com esse intuito, estabeleceu-se um modelo onde o programador não se detém com questões relativas à alocação e remoção de espaço de memória para suas estruturas. Quem trata de questões de alocação e remoção de espaço é a própria máquina virtual. Para liberação de espaço, existe um mecanismo especial chamado Garbage Collector, que é um processo da máquina virtual, que varre o espaço de memória dos programas em execução a fim de encontrar objetos sem referência, e também, mover objetos entre os diversos níveis da memória, de acordo com seu tempo de vida. No modelo de gerência com Garbage Collector, pode-se citar como vantagem, o fato de livrar o programador das questões relativas à alocação e também prevenção ao vazamento de memória. Como desvantagem pode-se citar o consumo de recursos de processamento ao se executar o Garbage Collector. Dentro do sistema de classificação da gestão de memória existem vários níveis de espaços que são citados a seguir:

Eden Space: Espaço no qual é alocada a maioria dos objetos com ciclo de vida curto. Espaço pertencente ao chamado Young gen.

Survivor space: Espaço secundário, reservado a objetos que ultrapassaram o tempo de permanência no Eden Space.  Este também é pertencente ao Young gen.

Tenured gen: Espaço onde serão alocados objetos que terão tempo vida mais prolongado, que ultrapassam o limite de permanência na Young gen.

Perm gen: Espaço especial que armazena os dados de reflexão da JVM, como classes e métodos de objetos. Em JVM’s que possuem compartilhamento de dados entre classes, este espaço é dividido em duas áreas: somente leitura(red-only) e leitura/escrita (read-write).

Para acompanhar o status destas áreas de memória na máquina virtual, a JDK fornece em seu pacote de demos, um aplicativo visual. Nele é possível visualizar graficamente o nível de ocupação de cada área de memória. Pode-se encontrá-lo no seguinte caminho:

[JAVA_HOME]\demo\management\MemoryMonitor\MemoryMonitor.jar
Fontes: http://www.devmedia.com.br/articles/viewcomp.asp?comp=8625 , http://www.manageengine.com/products/applications_manager/java-runtime-monitoring.html , http://www.linhadecodigo.com.br/artigo/568/garbage-collector-e-as-armadilhas-na-performance-de-aplicacoes.aspx , http://pt.wikipedia.org/wiki/Coletor_de_lixo

Nenhum comentário:

Postar um comentário