O Out Of Memory  é um erro comumente relacionado ao Windows que é um grande desafio para desenvolvedores de software, principalmente os que atuam em aplicações que processam alta carga de requisições. Normalmente, este erro ocorre quando a aplicação consome mais memória que o limite máximo permitido pelo sistema operacional para o processo.

 

Como e por que este erro ocorre?

 

Nas aplicações 32 bits o limite máximo de consumo de memória permitido para um processo é de aproximadamente 2GB. Caso a aplicação se aproxime deste valor o Windows levanta uma exceção de OutOfMemory, obrigando que o software seja reiniciado para não comprometer o funcionamento do sistema.

 

Outro fator que pode causar este erro é o uso da memória aplicação de maneira incorreta. Neste caso o software constantemente instancia e destrói vários objetos, causando problemas de fragmentação da memória. Após isso o Windows também não consegue liberar a memória de maneira correta, causando o estouro de memória.

Um outro caso onde este erro ocorre é quando a memória da máquina é insuficiente para a execução de todos os processos. Inicialmente a aplicação começa a reportar erros de “Insufficient Memory For This Operation”, seguidos por erros de “Out Of Memory”.

Em resumo, alguns cenários que podem causar este problema são:

  • Instanciar objetos e não liberá-los da memória.
  • Instanciar e destruir objetos a todo momento.
  • Pouca memória disponível na máquina

Como evitar este problema?

  • Sempre que instanciar um objeto tenha certeza que o mesmo será finalizado.
  • Nunca crie várias vezes o mesmo objeto que será utilizado, se possível utilize padrões de projeto como Singleton ou Pools de Objetos.
  • Evite a fragmentação da memória.
  • Crie aplicações cuja arquitetura seja escalável, pois toda aplicação possui um limite máximo.
  • Utilize componentes que possuam uma boa gestão de memória .