Постоянно растущее потребление оперативной памяти процессом - C#
Формулировка задачи:
Здравствуйте. Столкнулся с проблемой, не знаю как ее решить. В простое программа стабильно "ест" оперативную память. По 8кб каждые несколько секунд (в зависимости от частоты вызова функции).
Main:
Далее у нас несколько вариантов функции. Во-первых, память начинает расти если преобразовывать что-либо в string:
Также память будет расти если пытаться двигать курсор в консоли:
Если переменной присвоить DateTime.Now, то проблем нет, память ничто не ест, она не растет:
Но в такой вариации память уже начинает капать (в а уже string):
Может кто посоветовать как сделать так, чтобы при выполнении функции, память, которую функция использовала, освобождалась? Также интересно почему именно 8кб, это какой-либо буфер, я правильно понимаю? Читал про Dispose() паттерн, но разобраться с ним нормально не вышло.
static void Main(string[] args)
{
while (true)
{
Func();
System.Threading.Thread.Sleep(50);
}
} static void Func()
{
int a = 0;
a.ToString();
} static void Func()
{
Console.SetCursorPosition(10, 10);
} static void Func()
{
var a = DateTime.Now;
} static void Func()
{
var a = DateTime.Now.ToLongTimeString();
}Решение задачи: «Постоянно растущее потребление оперативной памяти процессом»
textual
Листинг программы
using System;
using System.Threading;
class Program
{
static void Main()
{
var buffer = new char[79];
buffer[0] = '\r';
while (true)
{
var now = DateTime.Now;
buffer[71] = (char)('0' + (now.Hour / 10));
buffer[72] = (char)('0' + (now.Hour % 10));
buffer[73] = ':';
buffer[74] = (char)('0' + (now.Minute / 10));
buffer[75] = (char)('0' + (now.Minute % 10));
buffer[76] = ':';
buffer[77] = (char)('0' + (now.Second / 10));
buffer[78] = (char)('0' + (now.Second % 10));
Console.Write(buffer);
Thread.Sleep(100);
}
}
}