KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
Code using System; internal static class Test { private static void Main() { try { Console.WriteLine("{0,10}: Start point", GC.GetTotalMemory(true)); Action simpleDelegate = SimpleDelegate; Console.WriteLine("{0,10}: Simple delegate created", GC.GetTotalMemory(true)); Action simpleCombinedDelegate = simpleDelegate + simpleDelegate + simpleDelegate; Console.WriteLine("{0,10}: Simple combined delegate created", GC.GetTotalMemory(true)); byte[] bigManagedResource = new byte[100000000]; Console.WriteLine("{0,10}: Big managed resource created", GC.GetTotalMemory(true)); Action bigManagedResourceDelegate = bigManagedResource.BigManagedResourceDelegate; Console.WriteLine("{0,10}: Big managed resource delegate created", GC.GetTotalMemory(true)); Action bigCombinedDelegate = simpleCombinedDelegate + bigManagedResourceDelegate; Console.WriteLine("{0,10}: Big combined delegate created", GC.GetTotalMemory(true)); GC.KeepAlive(bigManagedResource); bigManagedResource = null; GC.KeepAlive(bigManagedResourceDelegate); bigManagedResourceDelegate = null; GC.KeepAlive(bigCombinedDelegate); bigCombinedDelegate = null; Console.WriteLine("{0,10}: Big managed resource, big managed resource delegate and big combined delegate removed, but memory not freed", GC.GetTotalMemory(true)); GC.KeepAlive(simpleCombinedDelegate); simpleCombinedDelegate = null; Console.WriteLine("{0,10}: Simple combined delegate removed, memory freed, at last", GC.GetTotalMemory(true)); GC.KeepAlive(simpleDelegate); simpleDelegate = null; Console.WriteLine("{0,10}: Simple delegate removed", GC.GetTotalMemory(true)); } catch (Exception e) { C
Tags (comma-separated)
Save Edits
Cancel