linux查看内存的几个命令

free命令详解

参考[Linux上的free命令详解]
free命令可以看use内存,当malloc没被释放它会一直增加
在这里插入图片描述

echo 3 > /proc/sys/vm/drop_caches
//这个命令可以释放缓存

top命令详解

参考[Linux top命令小结]
top主要看idle
常用命令:top -d 3

cat /proc/cmdline命令详解

/ # cat /proc/cmdline
mem=144M earlycon console=ttyS0,115200 root=/dev/mtdblock3 rootfstype=squashfs mtdparts=spi-nor:960K(boot),64K(encrypt),3M(zImage),8704K(rootfs),2560K(res),1M(config)
//mem为系统os的内存大小
//后面boot、encrypt等是各个分区的大小

cat /proc/media-mem命令详解

/ # cat /proc/media-mem
---MMZ_USE_INFO:
 total size=376832KB(368MB),used=26648KB(26MB + 24KB),remain=350184KB(341MB + 1000KB),zone_number=1,block_number=11
 //用于音视频编解码的总大小total size

常见的内存泄露问题

  1. 一些文件描述符没有close(比如:socket)
  2. malloc 没有释放
  3. 一直创建线程、进程没释放
  4. 查看多个进程内存使用情况参考:https://blog.csdn.net/wojiaxiaohuang2014/article/details/127705648
    解决的办法:
    使用第三方工具,注释模块缩小范围,加打印,回退

常见的内存溢出问题

  1. 线程指定了栈的大小,举例:定义了一个数组超过了栈的大小就会导致溢出
  2. malloc一个大块内存,这块内存已经大于了可用内存
  3. 内存不够导致内存溢出:out of memory会有这个打印

常见的内存越界

  1. malloc了100个字节,往其传了110个字节的数据(可能会导致其他变量正确性,可能段错误(同样数组也是,定义64字节,传了128个字节数据))
  2. 解决:valgrind、静态扫描、gdb

重复释放导致段错误的问题

Program received signal SIGSEGV, Segmentation fault.
就是指指针被释放之后,再进行free就会导致重启死机

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

I&You

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值