对于绝大多数实时程序来说,实时处理相关程序中的循环问题所带来的对机器的损耗和自身的处理速度的平衡,以及与其他程序的交互以及对其他功能的影响难免会成为程序设计中最大的障碍同时也是最大的突破点。

  在所有这类问题面前,我们统一的解决方案几乎都是多线程操作,一点点将机器的性能发挥到我们可以控制的最大,并将我们处理速度提升到我们可以控制的最高高度。

  然而,对于很多人来说,多线程所带来的不稳定性无疑就是噩梦。

  譬如:

  起初我们在写单线程程序时,我们塑造了一条流水线,流水线上有几个环节,我们安排了一个工人,按部就班地将一个产品的一个个环节走完,然后再进行下一个产品的工作,慢慢地,随着对处理速度的要求和机器性能的提升,这种方案越来越out,我们开始借助多线程,我们指派多个工人甚至几十个工人同时作业,但是随着速度的几何倍的提升,真正的问题接踵而来。

  我们开始拆分流水线上的环节,将工人们开始按照每个流水线上的环节的工作强度开始分配人数。然而随着程序的不断的累加代码和功能,有两个问题在我们的开发环节中越来越明显,会极大的造成后期维护的精力和难度,最严重时甚至能毁掉整个程序---那就是内存和CPU的问题。

  内存问题及解决方案:

  在流水线中我们使用类将一个个我们的逻辑功能进行封装,随着处理要求的提升,我们不断地完善我们底层的内存块和内存池,不过随着代码的冗杂,里面必然会出现无法释放的内存块或超出使用的内存块,这样轻则会造成程序占用内存越来越高,重则导致指针乱调导致程序崩溃甚至数据莫名其妙的混乱。

  解决的思路我们可以密切的监视每块的内存的创建和销毁阶段,如我们在内存申请时向里面加点料,再在内存销毁时检测一下我们加的料。

  CPU高及解决方案:

  随着任务环节的越来越多,我们将我们程序分层,中间以各种方式链接,但是尽管多么合格的数据结构去协调各个环节,总有环节对接失误的时候,紧接着随之到来便是循环执行次数过多甚至会导致死循环,更严重的会出现死锁的情况。

  我们面对这种情况,如果我们在设计程序就想到了,我们可以仔细分析各个环节然后对整个结构提出最具有包容性。然而我们再后期扩展之时遇到只能不断地优化,逻辑清晰化。

转载于:https://www.cnblogs.com/daochong/p/6169443.html

linux c++应用程序内存高或者占用CPU高的解决方案_20161213相关推荐

  1. win10更新后,wsappx占用高内存/资源管理器占用CPU高

    目录 问题记录: 搜索与实践 最终解决办法 - 系统还原 新问题:设置搜索不能用 问题记录: 2022.7.26晚,没注意点击了"关机并更新"(有个intel驱动更新,不确定是否是 ...

  2. linux运行java程序内存过大_排查java应用linux环境内存占用过高的问题

    一.问题场景 在一个短信平台的项目中,设置了一个下发节点的Xmx为16G,但是出现了内存撑满,导致CPU过高的情况.当时的具体情况是,该应用内存占用16G,该应用CPU占用1400%(16核),服务器 ...

  3. win10升级后CFT加载程序占用CPU高解决办法

    win10升级后CFT加载程序占用CPU高,目前网上的解释是微软BUG,需要待后续版本解决,CPU持续占用较高,干不了其它事情,可以用如下方法解决. 用windows进程管理杀死后,由于此进程会自动启 ...

  4. Linux下JAVA线程占用CPU高的分析方法

    2019独角兽企业重金招聘Python工程师标准>>> 上次分析系统中占用CPU高的问题,得到一些使用Java自身调试工具的经验,与大家分享.  (1)使用top命令找出占用cpu最 ...

  5. jpa,分析duid参数,当前用户的最大线程数,线上问题排查,stack命令查看占用CPU高的线程堆栈信息

    1.先查看应用进程号: ps -ef | grep 应用名 ,也就是 pid 2.查看pid垃圾回收情况: jstat -gc pid 5000(时间间隔) 3.dump jvm二进制的内存详细使用情 ...

  6. win10系统system进程占用cpu高怎么解决

    Win10系统经常发现任务管理器中的system进程占用了很高的cpu内存,一直在50%左右,这也导致了多项应用程序运行卡顿,本人是家庭激活版本,也在网上搜索win10系统system进程占用cpu高 ...

  7. Win10 NVIDIA Container占用CPU高的处理方法

    打开任务管理器,发现 NVIDIA Container 占用CPU非常高(36.6%). 2 Windows 10系统 NVIDIA Container占用CPU高的处理方法 在任务管理器窗口中,先展 ...

  8. 为什么死循环占用CPU高

    文章出处:http://bbs.chinaunix.net/thread-1613560-1-1.html 为什么死循环占用CPU高 一个进程如果是死循环,那么占有的CPU会很高,可是操作系统时间片运 ...

  9. TortoiseSVN status cache占用CPU高

    进程占用CPU高 每次从SVN上更新资源时,电脑都会卡死,直到资源更新完.当要Commit资源时,SVN也会卡死资源管理器,如下图所示: 解决占用CPU高的问题 1.禁用图标缓存 2.排除路径和包含路 ...

最新文章

  1. 好用的数据增强工具Augmentor(原图和mask扩充)
  2. 打破国外垄断,我国拿下一项“制芯”关键技术
  3. 微软欢迎所有热爱开源软件的朋友们来投稿![征稿开放时间:2015年8月17日]
  4. Libusb交叉编译和移植
  5. 塞内加尔将于5月启用全国首个大型数据中心
  6. R,Python,Scala,Go,Julia
  7. Scala入门到精通——第三节 Array、List
  8. Spark SQL(九)之基于用户的推荐公式
  9. lucene 多个分词查找_使用Lucene的新FreeTextSuggester查找长尾建议
  10. python网络平台_python学习(九) 网络编程学习--简易网站服务器
  11. Bootstrap3 栅格系统之自定义mixin和变量
  12. 【less-4】sqli-labs靶场第四关
  13. 果断 Mark!27 个免费、低成本 Python 学习资源入手!
  14. MRFC-使用VXML、CCXML
  15. 第六章节 三层架构(一. 三层架构的概述)
  16. matlab 数值积分 截断误差,几种数值积分算法误差分析(10页)-原创力文档
  17. 一个Windows C++的线程池类实现
  18. 三分求单峰/单谷函数极值
  19. Android:系统日历同步日程
  20. 读书笔记:卓有成效的管理者

热门文章

  1. Qt学习之路(51): QByteArray和QVariant
  2. 架构语言ArchiMate -应用层(Application Layer)
  3. 开机、问题-MocorDroid拔掉电池开机比正常关机后开机慢1分钟问题-by小雨
  4. httpd glibc free() 报错解决一例
  5. 课程设计:混合数据排序
  6. js this指向分析
  7. iOS从生成证书到打包上架-02(详细2016-10最新)
  8. [修正] Firemonkey Windows 控件有虚线残影问题
  9. 如何让背景图片固定在中间,滚动内容图片不动?
  10. leetcode @python 130. Surrounded Regions