2008-10-29 18 views

Respuesta

13

Me gustaría consultar la sección de sintonización de CLR en el document mencionado por Gulzar.

Como señalan los otros carteles, cualquier objeto que implemente IDispose debería tener llamado cuando haya terminado, preferiblemente usando la construcción using.

fuego hasta perfmon.exe y añadir estos contadores:

  • Proceso \ bytes privados
  • Memoria de .NET CLR Número de bytes en todos los montones Proceso
  • \ Espacio de trabajo
  • memoria
  • .NET CLR \ Tamaño de montón de objeto grande

Aumento de Bytes privados mientras el número de Bytes en todos los contadores de pilas permanece igual indica el consumo de memoria no administrado.

Un aumento en ambos contadores indica gestionan la memoria consumo

1

Si tiene acceso al código fuente, es posible que desee comprobar que los objetos que implementan IDisposable se están referenciados dentro using declaraciones o estando dispuestos adecuadamente de cuando termines con ellos.

Using es una construcción C#, pero la idea básica es liberar recursos cuando haya terminado.

Otra cosa para comprobar es que los objetos grandes se ponen en el estado de la sesión "en proceso" o caché.

1

Más detalles definitivamente ayudaría. ¿Cuántas aplicaciones se están ejecutando dentro del grupo de aplicaciones? ¿Hay aplicaciones ASP.NET en el grupo?

Si está ejecutando ASP.NET, eche un vistazo a lo que está almacenando en las variables de la sesión y del caché. Use PerfMon para verificar cuántas colecciones de Generación 0, 1 y 2 están ocurriendo. Tenga cuidado con el almacenamiento de los elementos de la IU en el estado o la memoria caché de la sesión, ya que esto evitará que se recopile toda la instancia de la página y todos los hijos de la instancia de la página. Finalmente, verifique si está haciendo una gran cantidad de concatenación de cadenas. Esto puede causar muchas instancias de objetos, ya que las cadenas .NET son inmutables. Considera usar StringBuilder en su lugar.

+0

Sí, pero si las cadenas están en el montón de objetos grandes, que se recogerán sólo durante Gen 2 colecciones si no estoy equivocado. – Maxam

0

Como otras personas observaron causa común de este problema es la fuga de recursos, también hay un problema conocido con el servidor win2k3 y IIS6 KB916984

+0

Creo que este es el problema ... pero ya tengo el SP2. :( – Jason

1

Cree un mini-volcado del proceso w3wp y use WinDbg para ver qué objetos hay en la memoria. Esto es lo que hace el equipo de soporte de IIS en Microsoft cada vez que reciben preguntas como esta.

Cuestiones relacionadas