在Linux下查看内存我们一般用free命令:
[root@scs-2 tmp]# free
total used free shared buffers cached
Mem: 3266180 3250004 16176 0 110652 2668236
-/+ buffers/cache: 471116 2795064
Swap: 2048276 80160 1968116
下面是对这些数值的解释:
total:总计物理内存的大小。
used:已使用多大。
free:可用有多少。
Shared:多个进程共享的内存总额。
Buffers/cached:磁盘缓存的大小。
第三行(-/+ buffers/cached):
used:已使用多大。
free:可用有多少。
第四行就不多解释了。
区别:第二行(mem)的used/free与第三行(-/+ buffers/cache) used/free的区别。 这两个的区别在于使用的角度来看,第一行是从OS的角度来看,因为对于OS,buffers/cached 都是属于被使用,所以他的可用内存是16176KB,已用内存是3250004KB,其中包括,内核(OS)使用+Application(X, oracle,etc)使用的+buffers+cached.
第三行所指的是从应用程序角度来看,对于应用程序来说,buffers/cached 是等于可用的,因为buffer/cached是为了提高文件读取的性能,当应用程序需在用到内存的时候,buffer/cached会很快地被回收。
所以从应用程序的角度来说,可用内存=系统free memory+buffers+cached。
如上例:
2795064=16176+110652+2668236
接下来解释什么时候内存会被交换,以及按什么方交换。 当可用内存少于额定值的时候,就会开会进行交换。
如何看额定值:
cat /proc/meminfo
[root@scs-2 tmp]# cat /proc/meminfo
MemTotal: 3266180 kB
MemFree: 17456 kB
Buffers: 111328 kB
Cached: 2664024 kB
SwapCached: 0 kB
Active: 467236 kB
Inactive: 2644928 kB
HighTotal: 0 kB
HighFree: 0 kB
LowTotal: 3266180 kB
LowFree: 17456 kB
SwapTotal: 2048276 kB
SwapFree: 1968116 kB
Dirty: 8 kB
Writeback: 0 kB
Mapped: 345360 kB
Slab: 112344 kB
Committed_AS: 535292 kB
PageTables: 2340 kB
VmallocTotal: 536870911 kB
VmallocUsed: 272696 kB
VmallocChunk: 536598175 kB
HugePages_Total: 0
HugePages_Free: 0
Hugepagesize: 2048 kB
用free -m查看的结果:
[root@scs-2 tmp]# free -m
total used free shared buffers cached
Mem: 3189 3173 16 0 107 2605
-/+ buffers/cache: 460 2729
Swap: 2000 78 1921
查看/proc/kcore文件的大小(内存镜像):
[root@scs-2 tmp]# ll -h /proc/kcore
-r-------- 1 root root 4.1G Jun 12 12:04 /proc/kcore
备注:
占用内存的测量
测量一个进程占用了多少内存,linux为我们提供了一个很方便的方法,/proc目录为我们提供了所有的信息,实际上top等工具也通过这里来获取相应的信息。
/proc/meminfo 机器的内存使用信息
/proc/pid/maps pid为进程号,显示当前进程所占用的虚拟地址。
/proc/pid/statm 进程所占用的内存
[root@localhost ~]# cat /proc/self/statm
654 57 44 0 0 334 0
输出解释
CPU 以及CPU0。。。的每行的每个参数意思(以第一行为例)为:
参数 解释 /proc//status
Size (pages) 任务虚拟地址空间的大小 VmSize/4
Resident(pages) 应用程序正在使用的物理内存的大小 VmRSS/4
Shared(pages) 共享页数 0
Trs(pages) 程序所拥有的可执行虚拟内存的大小 VmExe/4
Lrs(pages) 被映像到任务的虚拟内存空间的库的大小 VmLib/4
Drs(pages) 程序数据段和用户态的栈的大小 (VmData+ VmStk )4
dt(pages) 04
查看机器可用内存
/proc/28248/>free
total used free shared buffers cached
Mem: 1023788 926400 97388 0 134668 503688
-/+ buffers/cache: 288044 735744
Swap: 1959920 89608 1870312
我们通过free命令查看机器空闲内存时,会发现free的值很小。这主要是因为,在linux中有这么一种思想,内存不用白不用,因此它尽可能的cache和buffer一些数据,以方便下次使用。但实际上这些内存也是可以立刻拿来使用的。
分享到:
相关推荐
在linux系统中,查看内存条个数,及每根内存的大小,可以使用dmidecode命令。 如下: #dmidecode | grep -A16 Memory Device$ 输出结果: Memory Device #存储设备 Array Handle: 0x1000 #阵列处理 Error ...
Linux 下查看内存条数: dmidecode |grep -A16 “Memory Device$” 有关dmidecode命令的详细用法,请参考这篇文章:linux查看主板内存槽与内存信息的命令dmidecode 。 以上就是小编为大家带来的Linux 下dmidecode...
本文将深入探讨Linux下的内存池实现,包括其原理、优势以及如何在C或C++中进行实践。 内存池的基本原理是预先一次性申请一大块连续内存,并将其分割成多个固定大小的小块,这些小块被称为内存块或者对象。当程序...
本文将详细介绍如何在Linux环境下使用`top`命令查看CPU使用率,以及如何利用`free`命令监控内存状态。 #### 使用`top`命令查看CPU使用情况 `top`命令是一个实时的系统监视工具,它能够提供关于系统任务执行情况的...
特别是在动态内存分配场景下,如果不妥善处理,很容易出现内存泄露的问题。内存泄露不仅会消耗系统资源,还可能导致应用程序性能下降甚至崩溃。因此,掌握如何有效地检测和定位内存泄露问题显得尤为重要。本文将详细...
总之,掌握Valgrind的使用,可以帮助程序员在Linux环境下更有效地发现和修复内存泄漏问题,提高软件质量,保障系统的稳定运行。请确保仔细阅读提供的文档,实践操作,以便深入理解和应用这些知识。
linux内存查看工具,devmem2
在Linux系统下的共享内存操作。最基础的测试程序。供新手学习!!!
linux 内核 内存泄露检测 linux 内核 内存泄露检测 linux 内核 内存泄露检测 linux 内核 内存泄露检测 linux 内核 内存泄露检测 linux 内核 内存泄露检测 linux 内核 内存泄露检测
在使用共享内存的程序异常退出时,由于没有释放掉共享内存,在调试时会出现错误。您可以使用shell命令来查看与释放已经分配的共享内存,下面将详细说明如何进行查看和释放分配的共享内存的方法。
Linux的内存管理,实际上跟windows的内存管理有很相像的地方,都是用虚拟内存这个的概念,文中介绍了在Linux下查看内存用的command free命令,并对反回的参数进行解释。
"Linux虚拟内存管理" Linux操作系统中,虚拟内存管理是指使用磁盘作为RAM的扩展,以增大可用的内存大小。内核会将暂时不用的内存块的内容写到硬盘上,以便释放出内存空间供其他进程使用。当需要用到原始的内容时,...
Python文件:python来查看Linux系统内存使用情况.py Python文件:python来查看Linux系统内存使用情况.py
哈希表是内存数据库中常用的一种数据结构,它在Linux环境下扮演着关键角色。 哈希表,又称散列表,是通过哈希函数将数据映射到一个固定大小的数组中。这个函数能够将任意长度的输入(如字符串)转化为固定长度的...
以上只是x86架构下Linux内存管理的一部分知识,实际上还包括内存预取、NUMA(Non-Uniform Memory Access)优化、内存气球技术(Memory Ballooning)等内容。理解并掌握这些知识对于系统管理员和软件开发者来说至关...
本文档主要用处处理,在linux环境下出现的数据库内存溢出的处理方法
Linux操作系统内存管理 Linux操作系统的内存管理是计算机科学中一个重要的领域。本文将详细阐述Linux操作系统的内存管理机制,包括物理内存和虚拟内存的管理机制、地址映射机制、内存碎片和内存不连续的问题解决等...
Linux 下C++共享内存、信号量封装,实现进程同步