Я написал автоматический тест, чтобы гарантировать, что наше приложение не утечет (управляемая и неуправляемая память) сейчас и позже по мере развития разработки. Проблема в том, что мой тест НЕ кажется надежным, но я не знаю, присущ ли он .NET и определению утечки, или тесту.
Это происходит так:
long start = PrivateBytes;
// here is the code for an action which is expected to be memory-constant
long difference= PrivateBytes-start;
Console.WriteLine(difference); // or Assert(difference < MyLimit);
private static long PrivateBytes
{
get
{
GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect();
return Process.GetCurrentProcess().PrivateMemorySize64;
}
}
Мой вопрос: почему я получаю огромные различия в разнице? (пример: один прогон дает 11Mo, следующий 33 Mo). Являются ли эти изменения нормальными или я могу их удалить?
Точность: я НЕ ищу инструмент для профилирования! (Я уже использую один!)