工程中发现引起的问题:

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

    1、排查是否内存泄漏

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

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

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

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

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

      参考:Process来控制主线程

      

 public static void SetProcess()
{
Process p = new Process();
p.StartInfo.FileName = System.IO.Directory.GetCurrentDirectory() + "\\Test.exe";
p.StartInfo.RedirectStandardError = true;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.UseShellExecute = false;
p.StartInfo.CreateNoWindow = true;
p.Start(); //设置CPU使用数,这里使用了CPU0和CPU1
p.ProcessorAffinity= (IntPtr)(0x0001 | 0x0002);
p.Close();
p.Dispose();
}

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

    5、读完垃圾回收机制后,重写做一个垃圾回收处理。比如一个线程中1秒钟强制回收一次。这样处理后代码消耗内存基本稳定了,不会爆表。在没有内存泄漏的情况,推荐这种方式,暴力回收。

代码:

 /// <summary>
/// 获取为关联的进程分配的专用内存量(以字节为kb)。
/// </summary>
/// <returns></returns>
public static long ReadProcessMemory()
{
long usedMemory = ;
try
{
Process proc = Process.GetCurrentProcess();
usedMemory = proc.PrivateMemorySize64 / ;
}
catch (Exception ex)
{
Utils.Log.Log.DataExport("logs", ex.ToString());
}
return usedMemory;
}

  6、SetProcessWorkingSetSize,然后特别注意下https://blog.csdn.net/weixin_30607659/article/details/97205705与http://blog.sina.com.cn/s/blog_49f8960e0100081x.html的说法,现在内存消耗一直是以龟速慢慢增加,又要砸时间搞这事了 。看我C#垃圾回收机制详解https://www.cnblogs.com/wwj1992/p/8387360.html,搞到最后估计大家也会经放弃治疗了。最后 希望看完的朋友有啥好意见可以分享给我,谢谢。

      

分析CPU使用率不断增加的原因的更多相关文章

  1. 服务器CPU使用率高的原因分析与解决办法

    我们的服务器在使用操作系统的时候,用着用着系统就变慢了,打开“ 任务管理器 ”一看,才发现CPU使用率达到80%以上.这是怎么回事情呢?遇到病毒了吗?硬件有问题?还是系统设置有问题呢?在本文中将从硬件 ...

  2. MySQL CPU 使用率高的原因和解决方法

    用户在使用 MySQL 实例时,会遇到 CPU 使用率过高甚至达到 100% 的情况.本文将介绍造成该状况的常见原因以及解决方法,并通过 CPU 使用率为 100% 的典型场景,来分析引起该状况的原因 ...

  3. 找出程序cpu使用率高的原因

    确定是CPU过高 使用top观察是否存在CPU使用率过高现象 找出线程 对CPU使用率过高的进程的所有线程进行排序 ps H -e -o pid,tid,pcpu,cmd --sort=pcpu |g ...

  4. 交换机CPU使用率高的原因

    交换机CPU的功能 1.管理已配置的软件协议,例如: – 生成树协议(STP) – 路由协议,例如OSPF和EIGRP – 热备路由协议(HSRP) – 思科发现协议(CDP) – 端口聚合协议(PA ...

  5. 排查MongoDB CPU使用率高的问题

    1.公司业务调整,把一部分数据由Redis转至MongoDB,业务在测试环境正常,生产环境上线后发现压力一上来MongoDB的服务直接把CPU占满了,和开发的同学分析了一下也参考了一下百度上类似的问题 ...

  6. 查询执行成本高(查询访问表数据行数多)而导致实例 CPU 使用率高是 MySQL 非常常见的问题

    MySQL CPU 使用率高的原因和解决方法_产品性能_常见问题_云数据库 RDS 版-阿里云 https://help.aliyun.com/knowledge_detail/51587.html ...

  7. 理解Linux CPU负载和 CPU使用率

    CPU负载和 CPU使用率 这两个从一定程度上都可以反映一台机器的繁忙程度. cpu使用率反映的是当前cpu的繁忙程度,忽高忽低的原因在于占用cpu处理时间的进程可能处于io等待状态但却还未释放进入w ...

  8. 06 案例篇:系统的 CPU 使用率很高,但为啥却找不到高 CPU 的应用?

    上一节我讲了 CPU 使用率是什么,并通过一个案例教你使用 top.vmstat.pidstat 等工具,排查高 CPU 使用率的进程,然后再使用 perf top 工具,定位应用内部函数的问题.不过 ...

  9. 某个应用的CPU使用率居然达到100%,我该怎么做?(三)

    某个应用的CPU使用率居然达到100%,我该怎么做?(三) 1. 引 你们好,可爱的小伙伴们^_^! 咱们最常用什么指标来描述系统的CPU性能呢?我想你的答案,可能不是平均负载,也不是CPU上下文切换 ...

随机推荐

  1. shell不排序去重

    一条命令搞定:   awk '!a[$0]++' file 如果是第一次出现a[$0]++的值为0(假),而!a[$0]++的值就为1(真),之后就执行print $0 第二次或者两次以上的出现a[$ ...

  2. 如何安装 btsync

    本文告诉大家如何在 windows 和 Linux 安装使用 Btsync 而且分享一些小东西给大家 btsync 是分布式网盘 在这高速运作的信息化时代,使用云端来衔接工作和生活的点滴已是寻常事.可 ...

  3. @bzoj - 4524@ [Cqoi2016]伪光滑数

    目录 @description@ @solution@ @version - 1@ @version - 2@ @accepted code@ @version - 1@ @version - 2@ ...

  4. oracle函数 exp(y)

    [功能]返回e的y次幂(e为数学常量) [参数]y,数字型表达式 [返回]数字 [示例] select exp(3),exp(0),exp(-3) from dual; 返回:20.0855369,1 ...

  5. Pointers and Arrays_4

    1.编写程序expr,以计算从命令行输入的逆波兰表达式的值,其中每个运算符或操作数用一个单独的参数表示.例如,命令expr 2 3 4 + * 将计算表达式2×(3+4) 的值. #include & ...

  6. SuperSocket新的配置属性 "defaultCulture"

    这个新增的功能只支持 .Net framework 4.5 及其以上版本. 它允许你设置所有线程的默认Culture, 不管这些线程是如何创建,通过代码或者来自于线程池. 这个新的配置属性 " ...

  7. HTML5有哪些新特性?移除了哪些元素?

    HTML5新特性: 拖放(Drag and drop)API 语义化标签(header.nav.footer.section.article.aside) 音频.视频(audio.video)API ...

  8. PHP用正则批量替换Img中src内容,用正则表达式获取图片路径实现缩略图功能

    PHP用正则批量替换Img中src内容,用正则表达式获取图片路径实现缩略图功能 网上很多正则表达式只能获取或者替换一个img的src内容,或者只能替换固定的字符串,要动态替换多个图片内容的试了几个小时 ...

  9. 如何安装Anaconda和Python

    1.下载安装文件 https://www.anaconda.com/download/ 2.百度安装方法:https://jingyan.baidu.com/article/3f16e0031e875 ...

  10. Codeforces Round #184 (Div. 2)

    A. Strange Addition (目前的做法好像做烦了) 统计数的\(mask\),表示个.十.百位上是否是0,共8种数. 枚举8种数组成的所有情况\(2^8\),记录最大数量. B. Con ...