Linux内存占用过高详解程序员
最近有个月经问题,老有人问为何开机后,还没有其他服务,mem就被用完了?是不是内存泄露?是否要重启服务?只能说不要看现象,要看本质才能找到问题的根源。
往往给出这样的结果,怀疑内存用了90%:
Mem: 4146788k total, 3825536k used, 321252k free, 213488k buffers
Swap: 2650684k total, 80k used, 2650604k free, 3006404k cached
这样怀疑很普遍,因为很多人用惯了Windows。Windows下,可以使用任务管理器查看当前进程对于内存的消耗情况。在我看来,Windows物理内存总是留下一定的空间,就算此时物理内存有空闲时,也会让某些程序去使用虚拟内存,目的是在Windows下启动新程序时,直接分配空闲的物理内存,这样子新程序启动速度就较快,而Linux则不然。
而在Linux下,使用top命令看到内存占用情况:
Mem: 4146788k total, 3825536k used, 321252k free, 213488k buffers
Swap: 2650684k total, 80k used, 2650604k free, 3006404k cached
这里的结果显示使用了3.8G的used,占用率达到90%。看看free的结果你还可以对比一下:
$ free -m
total used free shared buffers cached
Mem: 4049 3784 265 0 208 2939
-/+ buffers/cache: 636 3413
Swap: 2588 0 2588
虽然MEM显示了3.7G左右的used,但是(-/+ buffers/cache)减去buffers和cache的结果可以看到,当前进程实际占用内存是636M,而可用空闲(free)内存为3.4G。
可以这么理解:在linux的内存分配机制中,优先使用物理内存,当物理内存还有空闲时(还够用),不会释放其占用内存,就算占用内存的程序已经被关闭了,该程序所占用的内存用来做缓存使用,对于开启过的程序、或是读取刚存取过得数据会比较快。
如上面的例子:使用了4G的内存,3.7G被占用,但是buuffer和cached部分作为缓存,可以使用命中率的方式提高使用效率,而且这部分缓存是根据指令随时可以释放的,我们可以认为这部分内存没有实际被使用,也可以认为它是空闲的。
因此查看目前进程正在实际被使用的内存,是used-(buffers+cache),也可以认为如果swap没有大量使用,mem还是够用的,只有mem被当前进程实际占用完(没有了buffers和cache),才会使用到swap的。
2404.html
服务器部署程序员系统优化网站设置运维相关文章
- 学习Linux下信号量的实例分析(linux信号量实例)
- 籍Linux内存管理宝典(linux内存书)
- 文件Linux 内存中的文件映射磁盘(linux内存映射磁盘)
- Linux页表:内存管理的有效解决方案(linux页表)
- Linux 加强对进程内存的限制(linux限制进程内存)
- Linux下释放内存的有效命令(linux释放内存命令)
- Linux下编译X264:让开发者用代码说话(linux下编译x264)
- Linux下内存数据快速拷贝技术(linux内存拷贝)
- 运算Linux下浮点数运算精度提升之路(linux浮点数)
- 发行版最轻巧的Linux发行版:只有256MB内存也能轻松运行(最轻巧的linux)
- Linux下7z命令行压缩解压缩实战(7z命令行linux)
- Linux双内存技术:增强系统性能(linux双口ram)
- Linux系统:区分32位与64位版本(linux系统版本位数)
- 版本Linux分支版本:特性与优势(linux的分支)
- Linux防火墙关闭指南(关闭linux的防火墙)
- Linux进程:物理内存如何管理(linux进程物理内存)
- Linux文件内容合并技巧(linux合并文件内容)
- 技术开源技术:Linux 内存池探索(linux内存池开源)
- Linux系统内存回收机制研究(linux内存回收机制)
- Linux内存监控:实现系统最优运行(linux内存监控)
- 化Linux面板:助力中文用户轻松上手(linux面板中文)
- Linux内存占用排序:了解系统资源使用情况(linux内存占用排序)
- Linux指令手册:写得详实而易懂的入门书籍,适合新手快速掌握Linux操作系统。(linux那本书好)
- Linux检索命令——快速搜索你需要的内容(linux检索命令)
- Linux内存状态:洞悉你的系统情况(linux 内存状态)
- 提升Linux内存使用率的关键方法(linux 内存 使用率)
- Linux内存:最低8G开启无限可能(linux 内存多少g)
- Linux删除隐藏文件的最佳方法(linux 删除隐藏文件)
- 让世人尊敬的Linux创始人(linux的创始人)