分析CPU使用率不断增加的原因

工程中发现引起的问题:

  结合别的朋友的意见,我的优化思路是:

    1、排查是否内存泄漏

        经过反复查询代码,未发现有内存泄漏(可以自己百度搜索C#内存泄漏的原因)。可以通过任务管理器分析是否有内存泄漏,打开任务管理器-性能-打开资源监视器,然后可以检查CPU、内存、磁盘、网络等信息

    2、排查是否有线程未关闭

        线程未关闭引起的话,开辟线程后在不用时记得

        thread.DisableComObjectEagerCleanup();
                      thread.Abort();

            3、另外可以通过控制程序在那些个CPU中使用,从而避免打开不必要的CPU消耗。具体实现代码找度娘。

      参考:Process来控制主线程

      

 1 public static void SetProcess()
 2         {
 3             Process p = new Process();
 4             p.StartInfo.FileName = System.IO.Directory.GetCurrentDirectory() + "\\Test.exe";
 5             p.StartInfo.RedirectStandardError = true;
 6             p.StartInfo.RedirectStandardOutput = true;
 7             p.StartInfo.UseShellExecute = false;
 8             p.StartInfo.CreateNoWindow = true;
 9             p.Start();
10 
11             //设置CPU使用数,这里使用了CPU0和CPU1
12             p.ProcessorAffinity= (IntPtr)(0x0001 | 0x0002);
13             p.Close();
14             p.Dispose();
15         }
View Code

    4、CPU的使用率太高的话,线程上可以加上 时间间隔来减少分子,比如你的线程跑的速度是10秒每次和10毫秒每次效果上就完全就不同了(根据电脑的配置不同效果不一样的),或者直接用while(true);l来检测CPU的使用率更能直观看出。

待完善!

      

猜你喜欢

转载自www.cnblogs.com/LiuL123-321/p/12133345.html