2008-10-29 11 views

Antwort

13

Ich würde die CLR-Tuning-Abschnitt in der document Gulzar erwähnt.

Wie die anderen Poster darauf hingewiesen, sollte jedes Objekt, das IDispose implementiert, Dispose() aufgerufen haben, wenn es fertig ist, vorzugsweise mit dem using Konstrukt.

Feuer up perfmon.exe und fügen Sie diese Zähler:

  • Prozess \ Private Bytes
  • .NET CLR-Speicher # Bytes in allen Heaps
  • Process \ Working Set
  • .NET CLR-Speicher \ Large Object Heap Größe

Eine Erhöhung der privaten Bytes während Die Anzahl der Bytes in allen Heaps-Counter bleibt die gleiche zeigt nicht verwalteten Speicherverbrauch.

Eine Erhöhung der beiden Zähler Speicher Verbrauch

1

Wenn Sie den Zugriff auf den Quellcode haben, können Sie überprüfen möchten, dass alle Objekte, die IDisposable implementieren innerhalb using Aussagen Bezug genommen wird, oder ordnungsgemäß entsorgt werden wenn du mit ihnen fertig bist.

Using ist ein C# -Konstrukt, aber die Grundidee ist, dass Sie Ressourcen freigeben, wenn Sie fertig sind.

Eine weitere Sache, die überprüft werden soll, sind große Objekte, die in den Sitzungszustand oder Cache des Prozesses gebracht werden.

1

Mehr Details würde definitiv helfen. Wie viele Anwendungen werden innerhalb des Anwendungspools ausgeführt? Gibt es ASP.NET-Anwendungen im Pool?

Wenn Sie ASP.NET ausführen, sehen Sie sich gut an, was Sie in der Sitzung speichern und Variablen zwischenspeichern. Verwenden Sie PerfMon, um zu überprüfen, wie viele Sammlungen der Generation 0, 1 und 2 auftreten. Seien Sie vorsichtig beim Speichern von Benutzeroberflächenelementen im Sitzungsstatus oder im Cache, da dies verhindert, dass die gesamte Seiteninstanz und alle untergeordneten Instanzen der Seiteninstanz ebenfalls erfasst werden. Überprüfen Sie abschließend, ob Sie viele String-Verkettungen durchführen. Dies kann viele Objekt-Instanziierungen verursachen, da .NET-Strings unveränderbar sind. Schauen Sie sich stattdessen den StringBuilder an.

+0

Ja, aber wenn die Zeichenfolgen auf dem großen Objekt-Heap sind, werden sie nur in Gen 2-Sammlungen gesammelt, wenn ich mich nicht irre. – Maxam

0

dieses Problem gemeinsame Sache, auch ist es Ressource undicht ist verwaltet zeigen an ein bekanntes Problem mit win2k3 Server und IIS 6-KB916984

+0

Ich würde denken, das war das Problem ... aber ich habe SP2 bereits. :( – Jason

1
Wie andere Leute bemerken

Erstellen Sie einen Minidump des w3wp-Prozesses und verwenden Sie WinDbg, um zu sehen, welche Objekte sich im Speicher befinden. Dies ist, was das IIS-Support-Team bei Microsoft tut, wenn sie Fragen wie diese erhalten.

Verwandte Themen