Java OutOfMemoryError

Pelo menos algum dia, um programador profissional Java irá sofrer uma exceção do tipo: java.lang.OutOfMemoryError.  Com alguma sorte, este erro ocorrerá durante desenvolvimento da aplicação, mas acredite, normalmente acontece num ambiente produção. Mas afinal, o que significa tal “Error” ?
Por definição um Erro em Java é uma subclasse de Throwable, que indica problemas graves que uma aplicação normal não deve tentar capturar ( Utilizanto Try Catch ).  Olhando a documentação do proprio Java, vemos que  “OutOfMemoryError” é lançado quando a JVM necessita de mais memória para alocar novos objetos e, mesmo após a Garbage Colector ter sido invocada, ela não consegue esse espaço adicional.
Como JVMs 64bit estão ficando cada vez mais comuns em ambientes produção, isso parece ser a solução perfeita para este tipo de problema, ou seja, memória mais endereçável significa heap maior e travamentos menos freqüentes, será ?

Acontece que normalmente os administradores de servidor de aplicação apenas aumentam a memoria Heap disponivel, chegando até a incrível marca dos “GBs”, isso é claro, sem pensar nas consequencias disso: Menos desempenho e Troughput ! Isso acontece devido a um overhead da própría GC, uma vez que com mais heap para gerenciar, haverão mais pausas para a coleta “full”.

Um estudo realizado por Mirko Novakovic mostrou que problemas memória estão entre os problemas mais críticos relativos a estabilidade e desempenho de aplicações Java. Quase 50% dos 250 especialistas em  Java responderam que o gerenciamento correto da memória em uma aplicação Java é um fator crítico para o desempenho e estabilidade de suas aplicações. 

Separei alguns artigos que acredito ajudar a todos aqueles que pretendem entender este tópico:

Abrcs

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s