Ik gebruik in een C# programma een C++ library.
Nu is er een fix van die library wegens vermeende memory leaks in een functie die ik gebruik.
Nu kan ik natuurlijk gewoon die fix pakken en verder gaan, maar ik wil graag snappen hoe dat nu werkt met memory leaks.
Ik heb dan ook een functie ReportMemory() gemaakt die het geheugen gebruik weg schrijft in een log bestand, vervolgens roep ik de functie uit de library aan en dan nog eens ReportMemory().
Het verschil tussen de twee ReportMemory() zou dan de memory leak moeten zijn, toch?
Nu zie ik maar weinig verschil en ik vraag me dan ook af of ik het geheugen gebruik wel correct opvraag.
Dit doe ik:
Mijn vraag is, is er nog een manier om mogelijke memory leaks op te sporen?
Nu is er een fix van die library wegens vermeende memory leaks in een functie die ik gebruik.
Nu kan ik natuurlijk gewoon die fix pakken en verder gaan, maar ik wil graag snappen hoe dat nu werkt met memory leaks.
Ik heb dan ook een functie ReportMemory() gemaakt die het geheugen gebruik weg schrijft in een log bestand, vervolgens roep ik de functie uit de library aan en dan nog eens ReportMemory().
Het verschil tussen de twee ReportMemory() zou dan de memory leak moeten zijn, toch?
Nu zie ik maar weinig verschil en ik vraag me dan ook af of ik het geheugen gebruik wel correct opvraag.
Dit doe ik:
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
| private static void ReportMemoryUse() { Process curProcess = Process.GetCurrentProcess(); System.Text.StringBuilder sb = new System.Text.StringBuilder(); // Create header: ReportMessage("PrivateMemorySize64;PeakVirtualMemorySize64;PagedSystemMemorySize64;PagedMemorySize64;NonpagedSystemMemorySize64;PeakPagedMemorySize64;VirtualMemorySize64;WorkingSet64"); // Possible PlatformNotSupportedException sb.Append(curProcess.PrivateMemorySize64); sb.Append(";"); sb.Append(curProcess.PeakVirtualMemorySize64); sb.Append(";"); sb.Append(curProcess.PagedSystemMemorySize64); sb.Append(";"); sb.Append(curProcess.PagedMemorySize64); sb.Append(";"); sb.Append(curProcess.NonpagedSystemMemorySize64); sb.Append(";"); sb.Append(curProcess.PeakPagedMemorySize64); sb.Append(";"); sb.Append(curProcess.VirtualMemorySize64); sb.Append(";"); sb.Append(curProcess.WorkingSet64); ReportMessage(sb.ToString()); } |
Mijn vraag is, is er nog een manier om mogelijke memory leaks op te sporen?