У меня проблема с моим приложением, надеюсь, что кто-то может дать мне советы по его исправлению.Высокое использование ЦП после долгого времени
У меня многопоточное приложение. Он настраивает 10-20 потоков, и в каждом потоке я выполняю некоторые сложные задачи.
Thread thread = new Thread(ProcessThread);
thread.Start();
private void ProcessThread()
{
while(IsRunning)
{
// do some very complex operations: grab HTTP pages. Save to files. Read from files. Run another threads etc.
}
}
В начале приложение использует около 10% процессора и 140 Мб памяти. Но после 1000 часов использование процессора составляет 25% -30%, а память - 1200 МБ. Я знаю, что, возможно, у меня есть утечка памяти в моем коде, я постараюсь это исправить. Но что случилось с процессором? Почему он растет? Каждое выполнение выполняет те же операции, что и в начале и позже (например, открывать веб-страницу, захватывать некоторую информацию и сохранять ее в файле).
Я думаю, что проблема может быть с GC. Больше приложений памяти, больше процессора нужно очистить память?
Другой вопрос, не могли бы вы посоветовать хороший инструмент, как измерить, что такое процессор в моем приложении?
А может быть, вы можете порекомендовать хороший инструмент для анализа памяти и проверки того, где она протекает? Я пробовал JetBrains dotMemory, но не очень понял. Возможно ты можешь помочь мне. Стаж: http://prntscr.com/dev067 http://prntscr.com/dev7a2 Как я вижу, у меня действительно не слишком много неуправляемой памяти. Но в то же время я вижу проблемы со строками, но не могу понять, что не так, поскольку GC должен его очистить?
Оцените любые предложения и рекомендации, что я могу улучшить.