Question

Je reçois OutOfMemory Exception dans mon .net Addin. Le Addin est en utilisant un grand nombre d'objets gérés et non gérés. Est-il possible de piéger cette exception?

Mise à jour: Je pense que toute application peut obtenir une exception si elle processess de mémoire saturée une grande quantité de données à traiter et non libéré périodiquement. Supposons que j'ai une méthode qui analyse des structures en mémoire. Je lui donne 300 structures, il charge chacun d'entre eux dans la mémoire, les analyse et complète le traitement. Dans cette opération, l'utilisation de la mémoire était X. Maintenant, si je lui donne 3000 structures à traiter, il va analyser les 3000 en mémoire et l'utilisation de la mémoire sera 10X.

Mise à jour

Ce problème ne se voit que dans Excel 2007 et non pas dans Excel 2003 que j'ai demandé pourquoi je un personnel MSDN à examiner.

Était-ce utile?

La solution

Dans .Net le OutOfMemoryException est de lancer le moteur d'exécution quand il ne peut pas allouer la mémoire requise pour votre application. À ce titre, il y a très peu de travail réel qui peut être fait pour gérer une telle exception.

Au lieu de l'attraper, vous devez l'empêcher de se produire en premier lieu. Ignorant l'exception ne fera pas disparaître le problème.

Autres conseils

Si vous obtenez un OutOfMemoryException votre programme est mort, a cessé d'exister, transmis, il est plus et est allé rencontrer son fabricant.

Mais sérieusement, ce n'est pas en mesure de récupérer une partie de la mémoire, il est à court de vous ne pouvez donc pas faire quoi que ce soit.

Il pourrait être le garbage collector que vous obtenez. Essayez de forcer périodiquement la collecte.

Si cela ne fonctionne pas, lisez ceci: http://www.simple-talk.com/dotnet/.net-framework/the-dangers-of-the-large-object-heap/

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top