`
8366
  • 浏览: 802275 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

正确理解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的。

个人之见,欢迎拍砖。

 

 

转载:

 

http://hi.baidu.com/zheng918/blog/item/5dbe257ffae2e60029388a5b.html

分享到:
评论

相关推荐

    解决 linux 下 buffcache 占用过高的问题.docx

    解决 linux下 buff/cache 占用过高的问题解决 linux下 buff/cache 占用过高的问题

    dotNet Core 内存占用过高的解决方案.docx

    dotNet Core 内存占用过高的解决方案dotNet Core 内存占用过高的解决方案

    Linux高内存占用程序

    总之,理解和掌握Linux内存管理机制,以及如何诊断和优化高内存占用程序,对于任何Linux用户和管理员来说都是必不可少的技能。通过以上方法,我们可以有效地应对和解决这类问题,确保系统的高效运行。

    深入理解linux虚拟内存管理(中+英)

    对于匿名页,Linux可能会使用内存池或者伙伴系统来分配内存块。而对于文件映射页,内存分配会直接映射到文件,节省物理内存并实现内存与磁盘的同步。 页错误(Page Fault)是虚拟内存系统中的一个重要事件。当进程...

    深入理解Linux虚拟内存管理CD.rar

    2. 优化:避免不必要的全局变量,合理使用内存分配和释放,减少内存碎片。 总结,Linux虚拟内存管理是系统高效运行的关键,涉及地址映射、页面置换、内存分配等多个方面。理解和掌握这些知识点对于Linux系统管理员...

    Ubuntu cupsd内存占用过高

    解决Ubuntu中,cupsd内存占用过高的指令,为PDF版本,代码不能复制粘贴。

    深入理解Linux虚拟内存管理.rar

    通过深入学习这部分内容,我们可以更好地理解和优化Linux系统的内存使用,从而提升系统性能和稳定性。这份“深入理解Linux虚拟内存管理”的资料,无论是对于系统管理员还是开发者,都是值得研读的宝贵资源。

    深入理解LINUX内存管理学习笔记

    我不可能完全理解LINUX内存管理的精髓,肯定有很多地方理解错误。希望大 家能够指正,以便提高,谢谢。 学习方法: 可能您第一次阅读的时候很多地方都不理解,不用担心。那您可能需要阅读一些 文件系统的知识。 或者...

    《深入理解LINUX内存管理》学习笔记b.PDF

    《深入理解LINUX内存管理》学习笔记b.PDF

    Linux虚拟内存管理.pdf

    Linux支持虚拟内存(Virtual Memory),虚拟内存是指使用磁盘作为RAM的扩展,内核会将暂时不用的内存块的内容写到硬盘上,以便释放出内存空间供其他进程使用。当需要用到原始的内容时,它们被重新读入内存。 Linux...

    《深入理解linux内存管理》学习笔记 Linux 高阶学习

    Linux内核的内存管理是操作系统的核心部分,它负责有效地分配、使用和回收系统中的物理及虚拟内存。在《深入理解Linux内存管理》的学习笔记中,我们将会探讨以下几个关键概念: 1. **内存区域(Memory Regions)**...

    深入理解Linux内存管理

    关于linux2.4内存管理的,写的不错,英文版

    linux内存和CPU占用情况

    在Linux操作系统中,管理和监控内存以及CPU的使用情况对于系统管理员和开发者来说至关重要。了解这些信息可以帮助优化系统性能,排查故障,并确保服务的稳定运行。`mytop`是一款基于命令行的实时系统监控工具,类似...

    深入理解Linux虚拟内存管理

    深入理解Linux虚拟内存管理

    嵌入式Linux内存使用与性能优化(清晰版)

    嵌入式Linux内存使用与性能优化,很好的一本书

    嵌入式Linux内存与性能详解-史子旺

    Linux内存管理是操作系统的核心部分,理解和掌握这一领域对于开发者来说至关重要,尤其是在资源有限的嵌入式系统中。下面,我们将详细探讨该书可能涵盖的关键知识点。 首先,书中可能会详细阐述Linux内存的基本概念...

    嵌入式LINUX内存使用与性能优化.pdf

    针对linux内存的使用,详细讲解了如何优化内存,及性能的提高

    LINUX类主机JAVA应用程序占用CPU、内存过高分析手段

    当用户量过大,或服务器性能不足以支持大用户量,但同时又得不到扩容的情况下,进行性能分析,并对系统、...目前大多数运维产品都基于JAVA语言开发,读过本文分享的在linux环境下对JAVA的性能分析手段会让你受益匪浅。

    《深入理解LINUX内存管理》学习笔记

    在Linux操作系统中,内存...通过深入研究这些知识点,不仅可以理解Linux内存管理的基本原理,还能在实际操作中更好地优化系统性能,预防和解决问题。《深入理解LINUX内存管理》的学习笔记是探索这一主题的重要资源。

Global site tag (gtag.js) - Google Analytics