free
此命令用于显示系统内存的使用情况,包括总体内存、已经使用的内存;还可用于显示系统内核使用的缓冲区,包括缓冲(buffer)和缓存(cache)等。
使用方式
- free
命令输出
内存并不只有占用和空闲两个简单状态,我们从上面的输出中发现其中有buffers和cached的数据,从字面意义上来讲,都是缓存,只有弄清楚缓存了什么数据才能有效地区分这两种缓存。
buffers一般都不太大,在一个通用的Linux系统中一般为几十到几百MB字节,用于存储磁盘块设备的元数据,比如哪些块属于哪些文件、文件的权限、目录等信息。
cached会很大,一般都在GB字节以上,用于存储读写文件的页。当对一个文件进行读时,会取磁盘文件页放到其内存区域,然后从内存中进行读取;在写入一个文件时,会先写到缓存中,并将相关的页面标记位“dirty”。cached随着读写磁盘的多少而自动的增加或减少,这也取决于物理内存是否够用,如果应用使用的物理内存较多,则操作系统会适当缩小cached来保证用户进程对内存的需要。
pmap
此命令用来报告进程中各个模块占用内存的具体情况,显示比较底层的进程模块占用内存的信息,并且可以打印内存的起止地址等,用于定位深层次JVM或者操作系统的内存问题。
使用方式
- pmap -d 2862