我的應用程序出現問題,希望有人能給我建議如何解決它。長時間運行後的高CPU使用率
我有多線程應用程序。它調整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%的CPU和140MB內存。但1000後執行CPU使用率爲25%-30%,內存爲1200Mb。我知道我的代碼中可能存在內存泄漏,我會嘗試修復它。但是,CPU發生了什麼?它爲什麼會增長?每次執行都會執行與開始和稍後相同的操作(例如,打開網頁,獲取一些信息並將其保存到文件中)。
我認爲這個問題可以與GC。更多的內存應用程序需要更多的CPU需要清理內存?
另一個問題,能否請你指教一個很好的工具如何衡量什麼佔用CPU在我的應用程序?
也許你可以推薦一個很好的工具來分析內存,並檢查它泄漏?我試過JetBrains dotMemory,但是不太瞭解。也許你可以幫助我。 以下是統計: http://prntscr.com/dev067 http://prntscr.com/dev7a2 正如我所看到的,我沒有太多非託管內存。但同時我看到字符串的問題,但不能理解GC應該清除它的問題?
欣賞任何意見和建議,有什麼我可以提高。