Ich habe versucht, Speicherleck in unserer Software zu finden, und ich habe in Windows dabei in "Performance Monitor"Eine Möglichkeit, die Speicherbereinigung von Gen 0, 1 und 2 trotz konstanter Bytes in allen Heaps zu begrenzen? Und ist dieses Zeichen von Speicherlecks?
- Garbage Collection von Gen 1 und Gen 2 steigt exponentiell während Prozesses Report- gebaut, dass, so gefunden einige Arbeit leistet
- Garbage collection von Gen 1 & Gen 2 konstant bleibt, wenn Prozess im Leerlauf ist
- Garbage collection of Gen 0 setzt die Zeit vergeht zu erhöhen, wie durch unabhängig von Prozess einige Arbeit tut oder nicht
- Bytes in Alle Haufen zeigen das wird nicht im Laufe der Zeit
Ist das normal?
Hier wird die Bildschirmaufnahme Leistungsbericht ist
Diagramm zeigt die Gesamtzahl der Garbage Collections seit Beginn der Verfolgung, es ist keine Häufigkeit der Erhöhung. Auch Diagramme werden in verschiedenen Skalierungen angezeigt - siehe Spalte "Skalierung" des PerfMon. Wenn Sie sich bewusst sind, dass GC zu viel Zeit in Anspruch nimmt, nehmen Sie ein geeignetes Tool und überprüfen Sie es. Beispiel: [JetBrains dotTrace] (https://www.jetbrains.com/profiler/) (im Timeline-Modus) zeigt an, wie viel Zeit Sie für die GC benötigen. –
Wie wäre es mit "% Zeit in GC" Leistungszähler für diesen Zweck? –
Mit vollem Verständnis, welche Nummer es zeigt - ja. "Zeigt den Prozentsatz der verstrichenen Zeit an, die für die Durchführung einer Speicherbereinigung ** seit dem letzten Speicherbereinigungszyklus aufgewendet wurde **. Dieser Zähler gibt normalerweise die vom Speicherbereiniger durchgeführte Arbeit zum Sammeln und Komprimieren von Speicher für die Anwendung an Der Zähler wird nur am Ende jeder Speicherbereinigung aktualisiert. Dieser Zähler ist kein Durchschnitt, sein Wert gibt den letzten beobachteten Wert an. " https://msdn.microsoft.com/en-us/library/x2tyfybc(v=vs.110).aspx –