2010-11-18 11 views
1

Ich baue einen Web-Crawler in .Net, der ca. 500 HTTP-Web-Anfragen gleichzeitig ausführt. Alles läuft gut, aber das Problem entsteht an einigen Punkten; Sieht so aus, als würde der Garbage-Collection-Thread die gesamte Anwendungspause für ein paar Sekunden übernehmen. Gibt es trotzdem eine Reduzierung der von GC generierten Verzögerung?GC unterbricht die volle Anwendungsaktivität

Antwort

1

Guidance on how to avoid GC problems in .Net

Um die beste aus dem allocator erhalten Sie Praktiken wie Folgendes zu berücksichtigen sind:

  • alle des Speichers (oder so viel wie möglich) zuweisen zu sein verwendet mit einer gegebenen Datenstruktur gleichzeitig.
  • Entfernen Sie vorübergehende Zuweisungen, die mit wenig Aufwand vermieden werden können, .
  • minimieren die Anzahl der Objektzeiger geschrieben werden, vor allem solche Schreiben in älteren Objekten.
  • Reduzieren Sie die Dichte von Zeigern in Ihren Datenstrukturen.
  • Machen Sie begrenzte Verwendung von Finalizern, und dann nur auf "Blatt" -Objekte, wie viel wie möglich. Brechen Sie Objekte, wenn notwendig ist, um damit zu helfen.

Eine regelmäßige Praxis Ihrer Schlüsseldatenstrukturen zu überprüfen und die Durchführung Speichernutzungsprofilen mit Werkzeugen wie Allocation Profiler wird ein langer Weg zu halten Sie Ihre Speichernutzung wirksam und mit der Garbage Collector arbeitet seine besten gehen für dich.

Sie können request a GC irgend bequemer Zeit, die später die Pausen reduzieren

nach rechts auf die damit verbundenen Fragen Stackoverflow Schauen Sie auch - es gibt einige relevante denen es ----->

Verwandte Themen