Pregunta

Me estoy haciendo Excepción OutOfMemory en mi complemento .NET. El complemento es el uso de gran cantidad de objetos gestionados y no gestionados. ¿Hay una manera de atrapar esta excepción?

Actualizado: Creo que cualquier aplicación puede obtener una excepción OutofMemory si processess una gran cantidad de datos que necesita ser procesada y no liberado periódicamente. Supongamos que tengo un método que analiza algunas estructuras en la memoria. Le doy 300 estructuras, se carga cada uno de ellos en la memoria, los analiza y completa el proceso. En esta operación, el uso de la memoria era X. Ahora bien, si le doy 3000 estructuras para procesar, se va a analizar los 3000 en la memoria y el uso de memoria irá a 10X.

Actualización

Este problema sólo se ve en Excel 2007 y Excel 2003 no en el que me he preguntado por qué un personal de MSDN a mirar en él.

¿Fue útil?

Solución

En el .Net OutOfMemoryException es tirar por el tiempo de ejecución cuando no se puede asignar la memoria requerida para su aplicación. Como tal hay muy poco trabajo real que se puede hacer para manejar una excepción.

En lugar de captura se debe evitar que suceda en el primer lugar. Haciendo caso omiso de la excepción no hará desaparecer el problema.

Otros consejos

Si recibe un OutOfMemoryException su programa ha muerto, dejó de existir, transmitido, ya no es y ha ido a encontrarse con su creador.

Pero en serio, no es capaz de recuperar parte de la memoria que ha quedado sin lo que no puede hacer nada.

Podría ser el recolector de basura que conseguir. Tratará periódicamente forzando colección.

Si esto no funciona, lea esto: http://www.simple-talk.com/dotnet/.net-framework/the-dangers-of-the-large-object-heap/

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top