Pergunta

Estou ficando Exceção OutOfMemory no meu .net suplemento. O suplemento é usando o grande número de objetos gerenciados e não gerenciados. Existe uma maneira para prender essa exceção?

Atualizado: Eu acho que qualquer aplicação pode obter uma exceção OutofMemory se processess uma grande quantidade de dados que precisam ser processados ??e não libertou periodicamente. Suponha que eu tenho um método que analisa algumas estruturas na memória. Dou-lhe 300 estruturas, ele carrega cada um deles na memória, analisa-los e concluir o processamento. Nesta operação o uso de memória foi X. Agora, se eu dar-lhe 3000 estruturas de processo, que vai analisar os 3000 na memória e o uso de memória vai para 10X.

Atualização

Este problema só é visto em Excel 2007 e não no Excel 2003 que eu por isso eu pedi um pessoal MSDN de olhar para ele.

Foi útil?

Solução

Na Net o OutOfMemoryException é jogar pelo tempo de execução quando não pode alocar a memória solicitada para sua aplicação. Como tal, não é um trabalho muito pouco real que pode ser feito para lidar com tal uma exceção.

Em vez de captura-lo você deve impedir que isso aconteça no primeiro lugar. Ignorando a exceção não vai fazer o problema desaparecer.

Outras dicas

Se você receber um OutOfMemoryException seu programa morreu, deixou de existir, repassado, não é mais e foi para cumprir o seu criador.

Mas, falando sério, não é capaz de recuperar parte da memória é correr para fora de modo que você não pode fazer nada.

Poderia ser o coletor de lixo ficar com você. Tente periodicamente forçando coleção.

Se isso não ajuda, leia isto: http://www.simple-talk.com/dotnet/.net-framework/the-dangers-of-the-large-object-heap/

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top