Reputation: 191
If the objects (diff) inside of Memory Usage have decreased does that mean the garbage collection has run?
Upvotes: 0
Views: 101
Reputation: 13843
From document Analyze memory usage data, we could know :
The name of the columns depend on the debugging mode you choose in the project properties: .NET, native, or mixed (both .NET and native).
- The
Objects (Diff)
andAllocations (Diff)
columns display the number of objects in .NET and native memory when the snapshot was
taken.- The
Heap Size (Diff)
column displays the number of bytes in the .NET and native heaps
When you have taken multiple snapshots, the cells of the summary table include the change in the value between the row snapshot and the previous snapshot.
To analyze memory usage, click one of the links that opens up a detailed report of memory usage:
To view details of the difference between the current snapshot and the previous snapshot, choose the change link to the left of the arrow (Memory Usage Increase). A
red arrow
indicates anincrease
in memory usage, and agreen arrow
indicates adecrease
.
So, a green arrow indicates a decrease in memory usage.
And in general,for the majority of the objects that your application creates, you can rely on
the garbage collector
toautomatically
perform the necessary memory management tasks. However, unmanaged resources require explicit cleanup. The most common type of unmanaged resource is an object that wraps an operating system resource, such as a file handle, window handle, or network connection. Although the garbage collector is able to track the lifetime of a managed object that encapsulates an unmanaged resource, it does not have specific knowledge about how to clean up the resource. When you create an object that encapsulates an unmanaged resource, it is recommended that you provide the necessary code to clean up the unmanaged resource in a publicDispose
method. By providing aDispose
method, you enable users of your object to explicitly free its memory when they are finished with the object.
In summary, we can't arbitrarily say that as long as there is a decrease in memory usage, it must mean that the Garbage Collection is running. Perhaps at this time, the method Dispose
is used to free up memory.
For more information, you can check: Automatic Memory Management and Releasing Memory for Unmanaged Resources.
Upvotes: 0