free 命令查看
total used free shared buffers cached
Mem: 8163928 4958632 3205296 0 406392 1943600
-/+ buffers/cache: 2608640 5555288
Swap: 2104504 28428 2076076
Shared:多个进程共享的内存总额。
Buffers/cached:磁盘缓存的大小。
第二行(mem)的used/free与第三行(-/+ buffers/cache) used/free的区别:
第二行的used和free是从OS角度来看,因为从对于OS来说,buffers&cached都属于被使用的
第三行的used和free是从应用程序角度来看,对应用程序来说,buffer和cached是用来提高文件读取性能的,当应用程序需要使用时,buffer和cache是可以被快速回收使用的
Linux还提供了一些工具帮助我们查看系统信息
/proc/meminfo 机器的内存使用信息
/proc/pid/maps pid为进程号,显示当前进程所占用的虚拟地址。
/proc/pid/statm 进程所占用的内存
查看/proc/kcore文件的大小(内存镜像):
[root@scs-2 tmp]# ll -h /proc/kcore
-r-------- 1 root root 4.1G Jun 12 12:04 /proc/kcore
添加内容:
通过free我们看到cache占用特别多,我们知道系统会自己进行释放,但是能不能手工释放呢?
/proc是一个虚拟文件系统,我们可以通过对它的读写操作做为与kernel实体间进行通信的一种手段,我们也可以通过修改/proc文件来是内核做出调整,我们通过通过调整/proc/sys/vm/drop_caches来释放内存
/proc/sys/vm/drop_caches的默认值是0,
1、手动执行sync命令(sync 命令将所有未写的系统缓冲区写到磁盘中,包含已修改的 i-node、已延迟的块 I/O 和读写映射文件)
2、echo 3 > /proc/sys/vm/drop_caches 设置为3
3、使用free查看内存使用情况