Red de conocimiento informático - Computadora portátil - asp.net muestra el error System.OutOfMemoryException y no puede encontrar el archivo machine.config

asp.net muestra el error System.OutOfMemoryException y no puede encontrar el archivo machine.config

El espacio de direccionamiento de un sistema operativo de 32 bits es 4G, de los cuales 2G lo ocupa el sistema operativo, lo que significa que la memoria que queda para el proceso del usuario es solo 2G (esto también deduce parte del espacio que ocupa la imagen cuando se Cuando se carga el programa, generalmente solo se pueden usar 1,6G ~ aproximadamente 1,8G). Si un proceso necesita solicitar memoria y el sistema operativo no puede asignarle espacio de memoria, se producirá una excepción de falta de memoria. En .net, es System.OutOfMemoryException (una excepción lanzada cuando no hay suficiente memoria) OutOfMemoryException (. cuando no hay suficiente memoria y la ejecución no puede continuar) excepción lanzada por el programa). Aunque el rendimiento final es OutOfMemoryException, los motivos pueden ser diferentes. Antes de resolver este problema, es necesario analizar el estado de uso de la memoria actual del proceso para descubrir la causa y prescribir el medicamento adecuado. A continuación se ofrecen algunos consejos para solucionar estos problemas.

Para obtener más información, consulte: ffice marttags" /gt;t="on"gt; servidor de memoria 4G, luego t="on"gt; 4G × 60 = t="on"gt ; 2.4 G. Sin embargo, para el sistema operativo Win32, el espacio de memoria total que puede ocupar un proceso es t="on"gt; cuando la memoria ocupada por el proceso ASP.NET comienza a alcanzar t="on"gt; , debido a que si no se alcanza el "umbral de reciclaje" de t="on"gt;, IIS no iniciará la operación del proceso de reciclaje, pero debido a las limitaciones de Win32, en realidad no ha podido asignar más memoria al proceso. , debido al límite de Win32, no se puede asignar más memoria al proceso, por lo que es probable que se genere una excepción OutOfMemoryException. Para evitar esto, debemos reducir el "límite de memoria" para que IIS pueda reciclar el proceso antes. >

Microsoft recomienda que la memoria ocupada por el proceso ASP.NET no supere los 60, y es mejor que el valor real calculado no supere los 800 M. En otras palabras, para un servidor con 4G de memoria, es mejor configurarlo. la propiedad "memoryLimit" en "20". Establecer umbrales de reciclaje apropiados y permitir que IIS recicle procesos cuando sea apropiado es importante para garantizar el funcionamiento estable de todo el servidor y evitar OutOfMemoryExceptions

En IIS6, el umbral de reciclaje de. el proceso ASP.NET ya no está determinado por la propiedad "memoryLimit" en la sección de configuración, sino por la configuración del grupo de aplicaciones en el Administrador de IIS.

Sin embargo, incluso si estas configuraciones están configuradas correctamente, No hay garantía de que se evite OutOfMemoryException, porque las razones de esta situación pueden ser variadas y pueden ser muy complejas. Por ejemplo, la operación de recuperación de memoria puede tardar demasiado. Lo único a lo que los desarrolladores deben prestar atención es a recordar siempre no. para agregar código en el código use y desperdicie memoria innecesariamente :)

Si su servidor tiene mucha memoria y está frustrado por el límite de Win32 en la cantidad máxima de memoria que puede usar un proceso. entonces hay dos posibles soluciones:

1. Utilice el enlace al final de este artículo para iniciar la computadora en modo /3GB

2.

Algunas cosas para evitar el desbordamiento de la memoria

Si está creando una matriz, asegúrese de que tenga el tamaño correcto

Asegúrese de que haya suficiente memoria para uso interno y para nuevos objetos gestionados.

Si está programando en .NET Compact Framework, la biblioteca de tiempo de ejecución del lenguaje público *** genera esta excepción cuando no hay suficiente memoria disponible para uso interno o nuevos objetos administrados. Para evitar esta excepción, evite escribir métodos grandes que ocupen 64 KB o más de memoria.

El uso excesivo de memoria administrada suele deberse a los siguientes motivos:

1. Lectura de grandes conjuntos de datos en la memoria.

2. Crear demasiadas entradas de caché.

3. Sube o descarga archivos grandes.

4. Uso excesivo de expresiones regulares o cadenas al analizar archivos.

5. Demasiados estados de visualización.

6. Hay demasiados datos o demasiadas sesiones en el estado de sesión.

7. Cuando se llama a un método en un objeto COM y el método devuelve un tipo definido por el usuario que contiene una matriz segura (una matriz de tamaño variable), esta excepción puede generarse con un mensaje adicional: " No hay suficiente espacio de almacenamiento para completar esta operación. Esto se debe a que .NET Framework no puede encapsular el campo de estructura como un tipo de matriz seguro.

Un ejemplo de desbordamiento de memoria debido al uso inadecuado de matrices de bytes

clase parcial pública _Default: System.Web.UI.Page

{

Page_Load vacío protegido (remitente del objeto, EventArgs e)

{

byte[] bytes = File.ReadAllBytes("NIC.Web.UI.Page.Page.ReadAllBytes")ReadAllBytes("D:\toClient.xls"); //toClient.xls tamaño es 20M

Response.BinaryWrite(bytes)

}

}

En el programa anterior, si el archivo de salida es particularmente grande , puede aparecer un informe directo: Excepción System.OutOfMemoryException. La forma correcta es generar la segmentación del flujo de bytes. De hecho, asp.net tiene un método preparado Response.WriteFile (filePath) que puede hacer esto.

Respuesta.Escribir www.hnnedu.com Archivo("D:\toClient.xls");

Respuesta.Flush();

Respuesta.End();

Cuando se produce un desbordamiento de memoria en asp.net, una forma sencilla de solucionarlo es reciclar inmediatamente el grupo de aplicaciones

Al crear un tipo de imagen, la memoria se desborda (System. .OutOfMemoryException)

Código de error: System.Drawing.Image myimg=System.Drawing.Image.FromFile(file.FullName);

Se produce una excepción al abrir un archivo que no es un archivo de imagen:

MSDN: si el archivo no tiene un formato de imagen válido, o GDI no admite el formato de píxeles del archivo, este método generará una excepción OutOfMemoryException.

Los mensajes de excepción como este se malinterpretan fácilmente.