Auch danach Ein Job abgeschlossen, Der Gen2 Heap -Speicher bleibt weiterhin und ist nicht veröffentlicht, auch nachdem GC.Collect () manuell .
Unten im Bild können Sie Zickzackmuster sehen, die jeden Hangfire -Job verarbeitet und Heap Memory Gen 2 Reste oder Erhöhungen darstellen. src = "https://i.sstatic.net/o9uaudq1.png"/>
Ich habe eine Codezeile identifiziert, die eine signifikante Zunahme des Heap -Speichers zu verursachen scheint (Gen Gen 2) In meiner Anwendung: < /p>
Code: Select all
newTracker = connection.Add(newTracker );
< /code>
Hier füge ich nur einen Tracking -Datensatz hinzu, der die Telefonnummer, die gesendete Zeit enthält, und wenn der Link in der Nachricht geklickt wurde, klicken Sie auf die Zeit. < /p>
public static class Cron
{
public static void JobSendSMS()
{
// Do some DB reads here
...
var newTracker = MyFirm.SmsTracking.Add(newTracker ); // XML based table
foreach( var recipient in recipients)
{
// read some data and send the sms
// Add a tracking record
newTracker = connection.Add(newTracker );
}
GC.Collect(); // This line only clears some heap memory just created in the job so It won't help
}
< /code>
Nachdem alle Jobs abgeschlossen sind; Das zugewiesene Heap -Gen2 -Gedächtnis bleibt, niemals veröffentlicht, Ich bin mir nicht sicher, wann es veröffentlicht wird. Erhöhung des Diagramms (darstellen Gen 2 Heap -Speicher) tritt niemals auf: < /p>
// newTracker = connection.Add(newTracker);
S. 1: MyFirm.SmStracking Datentyp ist nicht aktiviert. Warum verursacht das Einfügen eines Datensatzes in eine C1 -Datenbank das Gen2 -Speicherwachstum?
Gibt es ein bekanntes Problem mit C1 -Datenbanken und Speicherverwaltung in C#? Operationen?