一、linux 查看进程的内存占用
cat /proc/pid/status 命令查看内存
top 命令下的内存占用分析
二、清理系统缓存
在linux中, 可以通过对/proc/sys/vm/drop_caches设置不同的数值,从而实现不同内容的回收,从linux官方文档中可以看到:
释放物理页缓存
echo 1 > /proc/sys/vm/drop_caches
释放可回收的slab对象,包含inode and dentry
echo 2 > /proc/sys/vm/drop_caches
同时释放 页、目录、索引节点缓存:
echo 3 > /proc/sys/vm/drop_caches
操作影响
上述操作是无害的操作,并且智慧释放完全没有使用的内存对象。脏对象(dirty objects)将继续被使用直到它们被写入到磁盘中,所以内存脏对象不会被释放。
如果在执行drop_caches之前执行sync指令,则会将脏对象刷新到磁盘中,这样drop_caches操作会释放出更多内存。
回收内存过程中可能会导致cpu和io比较高,也可以在进程运行过程中进行回收,但是更多的建议在停止进程后回收,影响较小。
注意:drop_caches需要花费一些时间(在终端中可以看到大约几十秒时间),此时再次使用cat /proc/buddyinfo可以看到立即出现了大量高阶内存页。
但是drop_caches这个触发动作是一次性的,也就是说,并不因为cat /proc/sys/vm/drop_caches时显示输出内容是3就表示系统不缓存内容。相反,一旦完成drop_caches,系统立即自动对后续内存对象进行缓存。所以要再次触发缓存清理,需要再次执行 echo 3 > /proc/sys/vm/drop_caches。
建议操作为:sync && echo 2 > /proc/sys/vm/drop_caches
三、加入定时优化脚本
vim /usr/local/sh/clean-ram.sh
sync && echo 2 > /proc/sys/vm/drop_caches
加入crontab定时任务:
0 2 * * * /usr/local/sh/clean-ram.sh
版权声明:本文内容来自简书:小灰灰1999 & CDSN:Bigtime007;,遵循CC 4.0 BY-SA版权协议上原文接及本声明。
本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
原文链接:
https://www.jianshu.com/p/6ad6bf1c2123
https://blog.csdn.net/BigTime_IOT/article/details/128605181
如有涉及到侵权,请联系,将立即予以删除处理。
在此特别鸣谢原作者的创作。
此篇文章的所有版权归原作者所有,与本公众号无关,商业转载建议请联系原作者,非商业转载请注明出处。