.NET 4.x Утечка памяти при использовании системного счетчика - C#

Узнай цену своей работы

Формулировка задачи:

Есть некий класс с событием upTimeUpdated (подписчикам отдается время работы ОС)
Листинг программы
  1. public class UpTimeCounter
  2. {
  3. private PerformanceCounter counter;
  4. private Timer checkingTimer;
  5. Logger logger = LogManager.GetLogger("UpTimeCounter");
  6. public event EventHandler<string> upTimeUpdated;
  7. public UpTimeCounter(int period)
  8. {
  9. counter = new PerformanceCounter("System", "System Up Time");
  10. period = period < 1 ? period : 1000;
  11. StartTimer(period);
  12. }
  13. private void StartTimer(int period)
  14. {
  15. TimerCallback tcb = new TimerCallback(CheckingTimerCallback);
  16. checkingTimer = new Timer(tcb, null, 0, period);
  17. }
  18. public void CheckingTimerCallback(object o)
  19. {
  20. logger.Trace("CheckingTimerCallback has called");
  21. string upTime = "no data";
  22. try
  23. {
  24. counter.NextValue();
  25. upTime = string.Format(TimeSpan.FromSeconds(counter.NextValue()).ToString(@"dd\d\a\y\s\ hh\h\o\u\r\s\ mm\m\i\n\u\t\e\s\ ss\s\e\c\o\n\d\s"));
  26. }
  27. catch (Exception e)
  28. {
  29. logger.Error("error getting uptime: {0}\r\nType: {1}\r\nSource: {2}\r\nStackTrace:\r\n{3}", e.Message, e.GetType(), e.Source, e.StackTrace);
  30. return;
  31. }
  32. upTimeUpdated?.Invoke(this, upTime);
  33. }
При создании экземпляра UpTimeCounter и подписки на это событие наблюдаю утечку памяти в приложении. Почему так может быть?

Решение задачи: «.NET 4.x Утечка памяти при использовании системного счетчика»

textual
Листинг программы
  1. 1> !hq tabular from s in ObjectsOfType("System.String") where s.__Size > 100 select new { Str = (string)s, Size = s.__Size }
  2. Str                                                 Size
  3. ...C:\Temp\VSDebugging\bin\Debug\VSDebugging.exe.C  118
  4. C:\Temp\VSDebugging\bin\Debug\VSDebugging.exe       104
  5. C:\Windows\Microsoft.NET\Framework\v4.0.30319\      106
  6. ...C:\Windows\Microsoft.NET\Framework\v4.0.30319\c  148
  7. ...System\CurrentControlSet\Control\Nls\RegionMapp  114
  8. Rows: 5
  9. Time: 697 ms, Memory start: 125.262kb, Memory end: 160.242kb, Memory delta: +34.980kb

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы