Visual Studio를 사용하지 않고 프로그래밍 방식으로 GC 작업을 모니터링하려는 C# 콘솔 응용 프로그램이 있습니다. 이 코드가있는 경우 예를 들어, :C# 응용 프로그램에서 GC 작업을 프로그래밍 방식으로 모니터링하는 방법은 무엇입니까?
public static void Main()
{
for (int i = 0; i < 100000; i++) AllocateByteArray();
}
private static void AllocateByteArray()
{
new byte[1000];
}
루프가 실행되는 동안 가비지 콜렉션이 발생하는 횟수를 모니터링 할 GC
클래스를 사용하는 방법이 있나요? 나는 처음에이 같은 시도 :
Console.WriteLine("Before:");
Console.WriteLine(GC.GetTotalMemory(false));
// do work...
Console.WriteLine("After:");
Console.WriteLine(GC.GetTotalMemory(false));
Console.WriteLine("After collection:");
Console.WriteLine(GC.GetTotalMemory(true));
을하지만 난 일을 한 동안 GC가 발생했을부터 측정이 정말 나에게 아무것도 얘기하지 않았다 깨달았다. .NET의 GC API에 익숙하지 않은데 이러한 유형의 통계를 프로그래밍 방식으로 측정하는 방법이 있습니까? 감사.
https://msdn.microsoft.com/en-us/library/w8f5kw2e(v=vs.110).aspx –
추가 GC 관련 독서 : (HTTPS [모두가 가비지 컬렉션 틀린 방법에 대해 생각] //blogs.msdn.microsoft.com/oldnewthing/20100809-00/?p=13203), [개체가 가비지 수집시기는 언제됩니까?] (https://blogs.msdn.microsoft.com/oldnewthing/20100810) -00 /? p = 13193) 그리고 아는 모든 것이 잘못되었을 때 (파트 1) (https://ericlippert.com/2015/05/18/when-everything-you-know-is-wrong-part-one/) [제 2 부] (https://ericlippert.com/2015/05/21/when-everything-you-know-is-wrong-part-two/) – theB