首先是通过free -h
命令查看,结果显示内存过大。
第1行Mem数据:
`total `内存总数
`used` 已经使用的内存数
`free` 空闲的内存数
`shared` 当前已经废弃不用,总是0
`buffers Buffer Cache`内存数
`cached Page Cache`内存数
第2行-/+ buffers/cache:
`-buffers/cache` 的内存数: (等于第1行的 used - buffers - cached)
`+buffers/cache` 的内存数: (等于第1行的 free + buffers + cached)
可见-buffers/cache反映的是被程序实实在在吃掉的内存,而+buffers/cache反映的是可以挪用的内存总数。
第三行数据是交换分区SWAP的,也就是我们通常所说的虚拟内存。
然后sync
命令(Linux sync命令用于数据同步,sync命令是在关闭Linux系统时使用的。
Linux 系统中欲写入硬盘的资料有的时候会了效率起见,会写到filesystem buffer
中,这个buffer
是一块记忆体空间,如果欲写入硬盘的资料存于此 buffer
中,而系统又突然断电的话,那么资料就会流失了,sync
指令会将存于 buffer
中的资料强制写入硬盘中。)
echo 1 > /proc/sys/vm/drop_caches
再次查看内存时就变少了.
另外需要注意的是,在生产环境中的服务器我们不要频繁的去释放内存,只在必要时候清理内存即可,更重要的是我们应该从应用程序层面去优化内存的利用和释放,经常清理内存可能只是暂时屏蔽的应用程序中的一些bug,所以更重要的是程序的调优,其他的交给操作系统来管理
如果提示Permission denied
是因为没有权限 chmod +x 文件名
即可
网友评论