IOT开发的学习-linux#4内存

Linux内存分为物理内存和虚拟内存。

物理内存是指实际的内存。

虚拟内存是指根据系统需要从硬盘中虚拟的划出一部分存储空间。是一种计算机系统的管理技术。

一般内存泄漏是指虚拟内存使用后没被释放,导致映射的实际存储空间被占用后释放不了,不能再次被使用。所以内存泄漏是看虚拟内存有没有持续增加。

内存使用情况可以用 ps aux命令查看,执行后可以看到以下结果:

==========================================

USER  PID %CPU %MEM    VSZ   RSS    TTY    STAT START   TIME COMMAND

root      1921  0.4        0.6       11384  1036   ?        Sl       11:10   0:00     process

==========================================

※VSZ就是虚拟内存,RSS就是实际内存。

 

一般产品发布前会做running测试,看看有没有内存泄漏的倾向。

running时,可以写个脚本(sh),把内存情况记录在文件中方便查看,简单例:

=========================================================================

while true;

do

path="/home/mem/memchk.txt"

touch "/home/mem/memchk.txt"

echo "USER PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND">>$path

    ps aux | grep -m 1 process1>> $path

    ps aux | grep -m 1  process2>> $path

    ps aux | grep -m 1 process3 >> $path

    # 100min once

    sleep 6000

  fi  

done

※注意存储容量,限定退出时间或超过一定容量后覆盖

=========================================================================

结果:

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND

root      1921  0.4  0.6  11384  1036 ?        Sl   11:10   0:00 process1

root      1924  1.1  0.4  10244   652 ?        Sl   11:10   0:00  process2

root      1942  0.9  1.0   7112  1684 ?        Sl   11:10   0:00  process3

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND

root      1921  0.1  0.6  11384  1036 ?        Sl   11:10   0:00   process1

root      1924  1.1  0.4  10244   652 ?        Sl   11:10   0:07  process2

root      1942  0.7  1.0   7112  1684 ?        Sl   11:10   0:04 process3

=========================================================================※如果数据比较多可以拷贝到excel上生成折线图来看会直观一点。

running时,虚拟内存是稳定的,有增减,但不会一直增加。

如果发现虚拟内存有持续增加的倾向,就有可能内存泄漏,可以分析有没有使用完没有释放的做法。

比如

open没做close,Malloc没做Free等。

养成好的编程习惯会减少很多内存泄漏的错误,大量减少后续开发时间。

※物理内存有时也会增加,这是因为有些路径还没有被跑到过,新跑时使用的内存会新分配,重复跑到不会增加,就没有问题。

 

 

 

 

 

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值