Code: Select all
Program.csCode: Select all
internal class Program
{
private static void Main(string[] args)
{
var testObject = new ZZTest();
Console.ReadLine();
Console.WriteLine(testObject.ToString());
}
}
< /code>
ZZTest.csCode: Select all
public class ZZTest
{
private string testString = "test";
}
< /code>
If I place a breakpoint on this line in the MainCode: Select all
Console.ReadLine();
< /code>
and take a heap snapshot, it shows the ZZTest
Question
Since the variable testObject ist zu diesem Zeitpunkt noch im Bereich und somit wird auf das Objekt immer noch verwiesen. Warum sollte es als toter Objekt widerspiegeln? In dieser Frage handelt es sich um die Müllsammlung, die hier nicht die Frage ist. In der anderen Frage heißt es auch: "Der Jitter kann die Tabelle verwenden, um festzustellen, dass eine solche lokale Variable nicht mehr nützlich ist, je nachdem, wie weit das Programm in dieser Main () -Methode vorgegangen ist, bevor es einen Anruf getätigt hat." In diesem Fall ist die Variable nach dem Haltepunkt erneut , sodass sie sehr immer noch "nützlich" ist.
Mobile version