【发布时间】:2016-12-03 15:03:50
【问题描述】:
我的应用程序有问题希望有人能给我建议如何解决它。
我有多线程应用程序。它调节 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 必须清理它?
感谢任何我可以改进的建议和建议。
【问题讨论】:
标签: c# .net multithreading memory-leaks cpu-usage