Linux c/c++编程--(内存2)测试内存的释放

1,如下是测试程序,获取内存的动态变化过程。

#! /bin/sh

FILE='/usr/local/procrank.log'
MEMLOG='/usr/local/meminfo.log'

#./memtest &

: > $FILE
: > $MEMLOG

procrank | head -n 1 > $FILE

#for i in {1..50..1}
#for (( i=1; i<50; i++))
#for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 \
#         32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
i=1
while true
do
#  procrank | grep maintest  >> $FILE
  cat /proc/meminfo >> $MEMLOG
  echo $i" is running"
  j=$(( i++))
  sleep 0.5
done

2,场景一:执行了一个消耗内存程序,不断的去申请内存。我们看一下系统内存,和关心的主业务程序main占用内存情况。

下图是使用Origin画图软件,给出的一个变化曲线图。

  1. 可用内存是包含 memfree + cached + buffer。虽然这里没写buffer部分的值。
  2. 进程的运行内存是可以压缩的,特别是代码段。
  3. 16s 时,是吃内存的memtest 进程被OOM给杀死了,可以看到available,cached,free 内存都恢复了。

猜你喜欢

转载自blog.csdn.net/yush34/article/details/89377622