Постоянно растущее потребление оперативной памяти процессом - 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);
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д