Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 575|回复: 0

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

[复制链接]
  • TA的每日心情
    奋斗
    半小时前
  • 签到天数: 791 天

    [LV.10]以坛为家III

    2049

    主题

    2107

    帖子

    72万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    723006
    发表于 2021-6-6 15:52:27 | 显示全部楼层 |阅读模式

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

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

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

      譬如:

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

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

      内存问题及解决方案:

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

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

      CPU高及解决方案:

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

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

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-9-13 21:17 , Processed in 1.071940 second(s), 29 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表