Linux 查看进程消耗内存情况总结

ca88亚洲城官网首页

2018-11-08

在Linux中,有很多命令或工具查看内存使用情况,今天我们来看看如何查看进程消耗、占用的内存情况,Linux的内存管理和相关概念要比Windows复杂一些。

在此之前,我们需要了解一下Linux系统下面有关内存的专用名词和专业术语概念:物理内存和虚拟内存物理内存:就是系统硬件提供的内存大小,是真正的内存,一般叫做内存条。

也叫随机存取存储器(randomaccessmemory,RAM)又称作随机存储器,是与CPU直接交换数据的内部存储器,也叫主存(内存)。

虚拟内存:相对于物理内存,在Linux下还有一个虚拟内存的概念,虚拟内存就是为了满足物理内存的不足而提出的策略,它是利用磁盘空间虚拟出的一块逻辑内存,用作虚拟内存的磁盘空间被称为交换空间(SwapSpace)。

Linux会在物理内存不足时,使用虚拟内存,内核会把暂时不用的内存块信息写到虚拟内存,这样物理内存就得到了释放,这块儿内存就可以用于其他目的,而需要用到这些内容的时候,这些信息就会被重新从虚拟内存读入物理内存。

Linux的buffers与cached在Linux中经常发现空闲的内存很少,似乎所有的内存都被消耗殆尽了,表面上看是内存不够用了,很多新手看到内存被消耗殆尽非常紧张,其实这个是因为Linux系统将空闲的内存用来做磁盘文件数据的缓存。 这个导致你的系统看起来处于内存非常紧急的状况。

但是实际上不是这样。 这个区别于Windows的内存管理。 Linux会利用空闲的内存来做cachedbuffers。 buffers是指用来给块设备做的缓冲大小(块设备的读写缓冲区),它只记录文件系统的metadata以及,an,thebuffersrememberwhatsindirectories,whatfilepermissionsare,andkeeptrack是作为pagecache的内存,文件系统的cache。

你读写文件的时候,Linux内核为了提高读写性能与速度,会将文件在内存中进行缓存,这部分内存就是CacheMemory(缓存内存)。 即使你的程序运行结束后,CacheMemory也不会自动释放。 这就会导致你在Linux系统中程序频繁读写文件后,你会发现可用物理内存会很少。 其实这缓存内存(CacheMemory)在你需要使用内存的时候会自动释放,所以你不必担心没有内存可用/;,minusthememoryintheswapcache,whichisrepresentedbySwapCached(thusthetotalpagecachesizeisCached+SwapCached).LinuxperformsallfileI/inthepagecache;;ifthedataisnotyetinthecache,,/,,thepageandbuffercachea,,共享内存共享内存是进程间通信中最简单的方式之一。 共享内存允许两个或更多进程访问同一块内存,就如同malloc()函数向不同进程返回了指向同一个物理内存区域的指针。 当一个进程改变了这块地址中的内容的时候,其它进程都会察觉到这个。 其实所谓共享内存,就是多个进程间共同地使用同一段物理内存空间,它是通过将同一段物理内存映射到不同进程的虚拟空间来实现的。 由于映射到不同进程的虚拟空间中,不同进程可以直接使用,不需要像消息队列那样进行复制,所以共享内存的效率很高。

共享内存可以通过mmap()映射普通文件机制来实现,也可以SystemV共享内存机制来实现,SystemV是通过映射特殊文件系统shm中的文件实现进程间的共享内存通信,也就是说每个共享内存区域对应特殊文件系统shm中的一个文件。 另外,我们还必须了解RSS、PSS、USS等相关概念:。