linux --free
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查看内存使用情况