I am very new to .NET Memory Profiler, and my CRL knowledge is kinda basic. Therefore, there is a weird situation that I just can't explain.
Basically, I suspect my program to have memory leaks. At startup, Windows Task Manager reports its Working Set (Memory) at around 200MB. After a night of running, the Working Set (Memory) spiked to 600 MB. Meanwhile, I took 2 snapshots of the program at those 2 points using .NET Memory Profiler, and the comparison told me that after overnight running, the program has total live bytes of 130 million (~130MB), and has only increased since startup at around 350 KB.
Can anyone help me understand what those numbers mean?
You can use the profiler to get additional information about the total memory usage of your application.
- The real-time graph includes a Total bytes plot, which includes all instance on the heap, even unreachable instances.
- You can collect a gen #0 snapshot (using the "Profiler->Collect gen #0 snapshot" command). This will avoid performing a full GC, and you will get information about unreachable instances on the heap as well.
- You can track information about the peak managed memory usage using the commands "Profiler->Track peak snapshot" and "Profiler->Collect peak snapshot"
- The native memory view will give you an overview of the total native memory used by the profiled process. The "Private" node in the "Physical memory" tree should correspond to the private working set presented by the task manager.
- You can also get much more detailed information about the native memory usage by enabling the unmanaged resources tracker. The information includes allocation call stacks of all native memory allocations.
SciTech Software AB
Users browsing this forum: Google [Bot] and 19 guests