4474|7

420

帖子

0

TA的资源

纯净的硅(初级)

楼主
 

谈内存管理 [复制链接]

本帖最后由 jorya_txj 于 2015-11-24 13:23 编辑

内存管理是一个很大的话题,也和产品的成功息息相关。很多人可能为linux的丰富性易用性而欢呼。但是忽略了很多重要的点,抛去实时性,由成千上万个开源软件组成的linux上层软件对于内存泄漏以及内存碎片而言,这个问题是无解的,换而言之,一旦产品使用linux上电后,最终结果是内存耗尽,系统崩掉。这不是危言耸听。很多人都知道使用linux相关的设备会越跑越慢,最后不得不重启,做得好一点的支撑的时间长一点,做得差的几个小时就出现这样的现象。其背后根本的原因就是内存出现问题。由于linux上层内存管理算法的稀缺只有一个malloc,长期使用后内存碎片无法避免,关键是除了malloc也只有malloc,对于那些频繁申请释放内存的操作最后一定是全部是内存碎片,耗尽系统内存。linux对于由于内存过大无法控制的进程会杀掉!从而保证其它的进程能活下来。这种设计适合于桌面应用的设计,但是绝对不适合工控设备的设计。对于工控设备来说,你把我主要的进程给杀死了,留其它的进程还有什么用呢?头脑已经死了,留下手足还有何用,只是一个死人而已。linux对于内存泄漏所提供的检查机制实在太少,很多时候基于linux的大型的软件系统最麻烦的就是看着内存不断泄漏,但是能做的很有限,支撑一段时间后最终内功耗尽统崩掉。

所以对于那些长时间需要连续运行的重要的设备不建议使用linux,除非用户能够容忍每隔一段时间重启。

最新回复

起一个进程,检测主程序的运行就行了,发现异常,就把它杀死,然后再重启它。  详情 回复 发表于 2016-3-11 14:46
点赞 关注

回复
举报

6419

帖子

16

TA的资源

版主

沙发
 
感觉不会啊,服务器跑一年都没事,也不用重启

点评

服务器的应用环境比较单一,应用也不会太多,但是手机,电视机,这些就不同了,涉及到大量的开源软件,内存这块很难掌控住。  详情 回复 发表于 2015-12-1 11:28
 
个人签名training
 

回复

420

帖子

0

TA的资源

纯净的硅(初级)

板凳
 
白丁 发表于 2015-11-24 21:02
感觉不会啊,服务器跑一年都没事,也不用重启

服务器的应用环境比较单一,应用也不会太多,但是手机,电视机,这些就不同了,涉及到大量的开源软件,内存这块很难掌控住。

点评

这个和系统没有关系呀。 和编写第三方软件的人水平有关  详情 回复 发表于 2016-3-2 11:49
 
 
 

回复

8

帖子

0

TA的资源

一粒金砂(初级)

4
 
有什么好办法吗?适合工控的内存管理?楼主能否开贴谈谈?
 
 
 

回复

1180

帖子

0

TA的资源

五彩晶圆(初级)

5
 
楼主的建议呢
 
 
 

回复

222

帖子

2

TA的资源

一粒金砂(高级)

6
 
本帖最后由 lzwml 于 2016-3-2 11:48 编辑

未必吧,我做过项目也频繁的malloc,只不过malloc大小几乎都相等(30KB左右),查看进程的内存利用几乎都没有变化。如果申请大小不一的内存或许容易产生碎片

据说linux的内存管理有个机制:
如果某进程申请了10M的内存,然后全部释放掉,改内存并不一定变成空闲内存,而是为该进程预留。
下次该进程再次升起1K、2K内存,只要不超过10M都能从原10M里划分。

我以前做过项目应该可以验证上面的叙述:

TCP服务器,刚开始  top  命令查看内存占用很低
之后服务器被400可客户端连接,内存逐渐升高
400个客户端断开连接,服务器释放400个链接的内存【我可以肯定已经释放】。
再次  top  命令查看内存没有减小

200~300个客户端再次连接服务器,内存占用没变化

客户端连接添加到800个,内存占用超过400个客户端所占用的内存(连接800个客户端大约消耗内存25M)
 
 
 

回复

222

帖子

2

TA的资源

一粒金砂(高级)

7
 
jorya_txj 发表于 2015-12-1 11:28
服务器的应用环境比较单一,应用也不会太多,但是手机,电视机,这些就不同了,涉及到大量的开源软件,内 ...

这个和系统没有关系呀。
和编写第三方软件的人水平有关
 
 
 

回复

1026

帖子

0

TA的资源

五彩晶圆(中级)

8
 
起一个进程,检测主程序的运行就行了,发现异常,就把它杀死,然后再重启它。
 
 
 

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

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
有奖探索 | 和村田一起,深挖 GNSS 开发!
活动时间:即日起-5月11日
活动奖励:智能手环、螺丝刀套装、双肩包

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网 5

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表