asp.net muestra el error System.OutOfMemoryException y no puede encontrar el archivo machine.config
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)
{ p>
byte[] bytes = File.ReadAllBytes("NIC.Web.UI.Page.Page.ReadAllBytes")ReadAllBytes("D:\toClient.xls"); //toClient.xls tamaño es 20M p>
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.