我的应用程序出现问题,希望有人能给我建议如何解决它。长时间运行后的高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应该清除它的问题?
欣赏任何意见和建议,有什么我可以提高。