是什么在树莓派上使用内存?

时间:2015-07-08 07:59:04

标签: raspberry-pi raspbian

在我的pi开始之后没有空闲记忆,但我找不到,用它:

pi@node1 ~ $ cat /proc/cpuinfo
processor       : 0
model name      : ARMv6-compatible processor rev 7 (v6l)
BogoMIPS        : 2.00
Features        : half thumb fastmult vfp edsp java tls
CPU implementer : 0x41
CPU architecture: 7
CPU variant     : 0x0
CPU part        : 0xb76
CPU revision    : 7

Hardware        : BCM2708
Revision        : 0013
Serial          : 00000000bf2e5e5c

pi@node1 ~ $ uname -a
Linux node1 4.0.7+ #801 PREEMPT Tue Jun 30 18:15:24 BST 2015 armv6l GNU/Linux

pi@node1 ~ $ head -n1 /etc/issue
Raspbian GNU/Linux 7 \n \l

pi@node1 ~ $ grep MemTotal /proc/meminfo
MemTotal:         493868 kB

pi@node1 ~ $ grep "model name" /proc/cpuinfo
model name      : ARMv6-compatible processor rev 7 (v6l)

pi@node1 ~ $ ps -eo pmem,pcpu,vsize,pid,cmd | sort -k 1 -nr | head -5
 0.6  0.2   6244  2377 -bash
 0.3  0.0   6748  2458 sort -k 1 -nr
 0.3  0.0   4140  2457 ps -eo pmem,pcpu,vsize,pid,cmd
 0.2  0.1   9484  2376 sshd: pi@pts/0
 0.2  0.1   5600  2236 /usr/sbin/ntpd -p /var/run/ntpd.pid -g -u 104:107

pi@node1 ~ $ free
             total       used       free     shared    buffers     cached
Mem:        493868     478364      15504          0        500       4956
-/+ buffers/cache:     472908      20960
Swap:       102396        116     102280

我不是Linux专家,但如果我理解正确,那么只有15Mb的可用内存,但没有任务使用超过0.6%。为什么没有更多免费?

1 个答案:

答案 0 :(得分:1)

内存不是由进程专门分配的。

  • 引导加载程序和init ram文件系统存储在内存中。
  • 内核(可能非常大)被加载到内存中。
  • 内核为其进程保留内存。 ps显示这些系统进程的0.0%。
  • 驱动程序分配缓冲区内存
  • 显卡需要内存
  • 如果您尚未在硬盘驱动器或SD卡上配置交换空间,则会使用内存。
  • 网络系统为unix套接字和共享内存分配内存。
  • 0.1%的100个过程为10%。

并且,如果你启动一个进程并停止它并不是所有内存都会被释放。 试试吧。使用free显示内存使用情况。启动需要一些内存的进程。停止该过程并再次使用free。我敢打赌,内存使用量比以前多。

修改

以下是内存使用量较少的pi示例。我没有运行java的问题。我安装了WLAN Dongle和原装NOIR CAM。

我安装了Raspbian Wheezy。我使用了从源代码编译的内核:

> uname -a
Linux raspberrypi 3.18.14+ #2 PREEMPT Sun May 31 20:19:04 UTC 2015 armv6l GNU/Linux

> head -n1 /etc/issue
Raspbian GNU/Linux 7 \n \l

在这个pi上,我可以在可接受的时间段内运行java -version

time java -version
java version "1.8.0"
Java(TM) SE Runtime Environment (build 1.8.0-b132)
Java HotSpot(TM) Client VM (build 25.0-b70, mixed mode)

real    0m1.012s
user    0m0.800s
sys     0m0.190s

这是我的记忆足迹

> free 
            total      used       free       shared   buffers   cached
Mem:        380816     138304     242512     0        8916      96728
-/+ buffers/cache:      32660     348156  
Swap:       102396          0     102396