Ich habe eine Hochleistungsanwendung, die eine sehr große Datenmenge verarbeitet. Es empfängt, analysiert und verwirft enorme Informationsmengen in sehr kurzen Zeiträumen. Dies führt zu einer beträchtlichen Menge an Objektabwanderung, die ich derzeit zu optimieren versuche, verursacht jedoch auch ein sekundäres Problem. Wenn die Garbage Collection aktiviert wird, kann dies zu langen Verzögerungen beim Aufräumen führen (mit 10 meine ich 10 bis 100 Millisekunden). In 99% der Fälle ist dies akzeptabel, aber für kurze Zeitfenster von etwa 1 bis 2 Minuten muss ich absolut sicher sein, dass die Speicherbereinigung keine Verzögerung verursacht. Ich weiß, wann diese Zeiträume im Voraus auftreten werden, und ich muss nur sicherstellen, dass die Speicherbereinigung in diesem Zeitraum nicht erfolgt. Die Anwendung wird mit .NET 4 in C # geschrieben.
Meine Fragen sind;
- Ist es möglich, die Garbage Collection für das gesamte Programm kurz anzuhalten?
- Ist es möglich, mit System.GC.Collect () die Speicherbereinigung vor dem Fenster zu erzwingen, das ich für die Speicherbereinigung benötige, und wenn ja, wie lange bin ich für die Speicherbereinigung frei?
- Welchen Rat haben die Menschen, um den Bedarf an Garbage Collection insgesamt zu minimieren?
Hinweis - Dieses System ist ziemlich komplex mit vielen verschiedenen Komponenten. Ich hoffe, dass ich nicht zu einem Ansatz übergehen muss, bei dem ich für jede Klasse des Programms eine benutzerdefinierte IDisposable-Schnittstelle implementieren muss.