C sharp - Se produjo una excepción de tipo 'System.OutOfMemoryException'.

   
Vista:

Se produjo una excepción de tipo 'System.OutOfMemoryException'.

Publicado por Naroh (4 intervenciones) el 24/04/2014 23:56:09
Buenas tardes.

Al tratar de procesar un archivo XML que pesa 556,109 KB y guardar la información en una base de datos me sale el siguiente error:
Se produjo una excepción de tipo 'System.OutOfMemoryException'.

Este error me sale cuando va al 89% aprox del documento leído. He estado monitoreando el equipo y la memoria RAM aún le queda espacio para ser asignada cuando esta excepción se presenta. Utilizando un StackTrace me dice lo siguiente:
en System.String.ConcatArray(String[] values, Int32 totalLength)
en System.String.Concat(String[] values)
en ConfigServicio.Form1.LeerXML(FileInfo fileLXML)

Leyendo en varios foros y consultando varia información indican que no tiene que ver con la memoria del equipo, si no la que es asignada al Freamwork .NET para que este ejecute las tareas, sin embargo, no he encontrado nada de como poder solucionarlo.

Si alguien tiene alguna forma de ayudarme le quedare eternamente agradecido.

Saludos!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Se produjo una excepción de tipo

Publicado por Pico (114 intervenciones) el 25/04/2014 10:48:19
¿Te has parado a pensar alguna vez lo largo que puede hacerse una eternidad?

Cuando hagas una operación con un fichero tienes que hacerlo de manera que dé igual si pesa 4 kas que cientos de gigas. Lo que no puedes hacer es meter el archivo entero en memoria y luego pretender procesar, o ir procesando mientras vas metiendo el archivo entero en memoria. Tienes que coger un cacho, procesar, otro cacho, procesar, y todo con un búfer pequeño. Es la técnica del segmentado, o paginado, o cacheado (de cacho), o como quieras llamarla, con la que por ejemplo un 8086 puede acceder a un mega, un 286 a 16 megas o un 386 o pentium a 32 bits a muchos miles de gigas, no sólo 4.

No he visto el código tuyo, pero lo más evidente es que estés haciendo eso.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar