Warum zeigt ein In-Scope-Objekt als "tot" in Visual Studio, wenn sie einen Heap-Schnappschuss durchführen?C#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Warum zeigt ein In-Scope-Objekt als "tot" in Visual Studio, wenn sie einen Heap-Schnappschuss durchführen?

Post by Anonymous »

Ich habe dieses Beispielprogramm: < /p>

Code: Select all

Program.cs
:

Code: Select all

internal class Program
{
private static void Main(string[] args)
{
var testObject = new ZZTest();

Console.ReadLine();
Console.WriteLine(testObject.ToString());
}
}
< /code>
ZZTest.cs
:

Code: Select all

public class ZZTest
{
private string testString = "test";
}
< /code>
If I place a breakpoint on this line in the Main
Methode:

Code: Select all

Console.ReadLine();
< /code>
and take a heap snapshot, it shows the ZZTest
object as dead with no references (doesn't display unless I check "Show dead objects"):
Image

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.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post