admin管理员组

文章数量:1586727

linux查看内存的几个命令基于编解码视频芯片

  • free命令详解
  • top命令详解
  • cat /proc/cmdline命令详解
  • cat /proc/media-mem命令详解
  • 常见的内存泄露问题
  • 常见的内存溢出问题
  • 常见的内存越界
  • 重复释放导致段错误的问题

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/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就会导致重启死机

本文标签: 几个命令内存Linux