您的当前位置:首页正文

linux查看内存的几个命令

2024-11-13 来源:个人技术集锦

free命令详解

参考
free命令可以看use内存,当malloc没被释放它会一直增加

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

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

常见的内存越界

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

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

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

Top