Linux 内存 virt res shr data swap 意义

 

 virt  res shr data 这几个很容易搞混了,写一下

 首先解释下含义:

 virt : 程序占用的虚拟内存

 man: The total amount of virtual memory used by the task. It includes
all code, data and shared

libraries plus pages that have been swapped out and pages that have been
mapped but not used.

 res  :  resident memory usage  常驻内存,也就是程序真正占用的内存

man : The non-swapped physical memory a task has
used

 shr : 共享的内存, 共享库啥的

man:  The amount of shared memory used by a task. It
simply reflects memory that could be potentially

shared with other processes

 data:  数据占用的内存 ,除了可执行文件以外的内存。

man: The amount of virtual memory devoted to other than
executable code, also known as the ‘data resi‐

dent set‘ size or DRS.

 

swap: 交换出去的已经申请,但没有使用的空间

 man: Memory that is not resident but is present in a task. This is
memory that has been swapped out

but could include additional non-resident memory. This
column is calculated by subtracting phys‐
ical memory from virtual
memory

.

 下面通过一些例子来说明:


#include<stdio.h>
#include<stdlib.h>

int main ()
{

char arr[ 1024*1024*1];
void* p = malloc( 1024*1024*512 );
if( NULL == p ) { printf("malloc mem fail .." ); return; }

sleep(200);

}

 gcc  malloc.c -o malloc

运行结果:

  从上面可以看出 DATA : 堆和栈 的总和。

  从 man 的手册里面可以知道 VIRT = 4+513M + 228 ?

 

 继续试验:


int main ()
{

char arr[ 1024*1024*1];
void* p = malloc( 1024*1024*512 );
if( NULL == p ) { printf("malloc mem fail .." ); return; }
memset(p, 0, 1024*1024*512) ;
memset(arr, 0, 1024*1024*1) ;
sleep(200);

}

 运行结果: 

  从结果中可以看出

  RES 进程正在使用的内存空间,申请内存后并使用

 

下面继续:

   


#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include <sys/ipc.h>
#include <sys/shm.h>

int main ()
{

char arr[ 1024*1024*1];
void* p = malloc( 1024*1024*512 );
if( NULL == p ) { printf("malloc mem fail .." ); return; }
int fd = shmget( IPC_PRIVATE , 1024*1024*20 , 0666|IPC_CREAT);
if( -1 == fd ) { return; }
void* pShm = shmat(fd, NULL, 0);

memset(p, 0, 1024*1024*512) ;
memset(arr, 0, 1024*1024*1) ;
memset(pShm, 2, 1024*1024*20 / 2);
sleep(200);

}

运行结果:

 

 从上面可以看出

  SHR:  共享内存使用的空间。

  SWAP: 已经申请,但是没有使用的内存 堆 栈 共享内存

总结一下:

 VIRT :虚拟内存,包含代码段、堆栈。

 RES: 进程真正使用的内存

 SWAP: 已经申请,但是没有使用的内存

 DATA :堆+栈

 SHR : 共享内存使用的空间。

Linux 内存 virt res shr data swap 意义,布布扣,bubuko.com

时间: 2024-10-14 12:44:21

Linux 内存 virt res shr data swap 意义的相关文章

linux ps top 命令 VSZ,RSS,TTY,STAT, VIRT,RES,SHR,DATA的含义

linux ps top 命令 VSZ,RSS,TTY,STAT, VIRT,RES,SHR,DATA的含义 linuxpstop http://javawind.net/p131 VIRT:virtual memory usage 虚拟内存 1.进程“需要的”虚拟内存大小,包括进程使用的库.代码.数据等 2.假如进程申请100m的内存,但实际只使用了10m,那么它会增长100m,而不是实际的使用量 RES:resident memory usage 常驻内存 1.进程当前使用的内存大小,但不包

linux top命令VIRT,RES,SHR,DATA的含义

VIRT:virtual memory usage 虚拟内存1.进程“需要的”虚拟内存大小,包括进程使用的库.代码.数据等2.假如进程申请100m的内存,但实际只使用了10m,那么它会增长100m,而不是实际的使用量 RES:resident memory usage 常驻内存1.进程当前使用的内存大小,但不包括swap out2.包含其他进程的共享3.如果申请100m的内存,实际使用10m,它只增长10m,与VIRT相反4.关于库占用内存的情况,它只统计加载的库文件所占内存大小 SHR:sha

linux下VIRT,RES,SHR的含义

如题的三个字段虽说在man top下面都有解释,但感觉有些含糊,看后难以理解它们对进程资源占用的具体情况是如何的.查阅资料后,归纳一下. VIRT: 1.进程"需要的"虚拟内存大小,包括进程使用的库.代码.数据等 2.假如进程申请100m的内存,但实际只使用了10m,那么它会增长100m,而不是实际的使用量 RES: 1.进程当前使用的内存大小,但不包括swap out 2.包含其他进程的共享 3.如果申请100m的内存,实际使用10m,它只增长10m,与VIRT相反 4.关于库占用内

Top命令VIRT,RES,SHR,DATA的含义

VIRT:virtual memory usage 1.进程"需要的"虚拟内存大小,包括进程使用的库.代码.数据等 2.假如进程申请100m的内存,但实际只使用了10m,那么它会增长100m,而不是实际的使用量 RES:resident memory usage 常驻内存 1.进程当前使用的内存大小,但不包括swap out 2.包含其他进程的共享 3.如果申请100m的内存,实际使用10m,它只增长10m,与VIRT相反 4.关于库占用内存的情况,它只统计加载的库文件所占内存大小 S

linux进程内存到底怎么看 剖析top命令显示的VIRT RES SHR值

引 言: top命令作为Linux下最常用的性能分析工具之一,可以监控.收集进程的CPU.IO.内存使用情况.比如我们可以通过top命令获得一个进程使用了多少虚拟内存(VIRT).物理内存(RES).共享内存(SHR). 最近遇到一个咨询问题,某产品做性能分析需要获取进程占用物理内存的实际大小(不包括和其他进程共享的部分),看似很简单的问题,但经过研究分析后,发现背后有很多故事-- 1 VIRT RES SHR的准确含义 三个内存指标,VRIT,RES,SHR准确含义是什么?谁能告诉我们?MAN

剖析top命令显示的VIRT RES SHR值

http://www.fuzhijie.me/?p=741 引 言: top命令作为Linux下最常用的性能分析工具之一,可以监控.收集进程的CPU.IO.内存使用情况.比如我们可以通过top命令获得一个进程使用了多少虚拟内存(VIRT).物理内存(RES).共享内存(SHR). 最近遇到一个咨询问题,某产品做性能分析需要获取进程占用物理内存的实际大小(不包括和其他进程共享的部分),看似很简单的问题,但经过研究分析后,发现背后有很多故事-- 1 VIRT RES SHR的准确含义 三个内存指标,

Linux内存机制以及手动释放swap和内存

哇,感觉好久没更新了,今天我们来谈谈Linux的内存机制. 首先我们理一下概念 一.什么是linux的内存机制? 我们知道,直接从物理内存读写数据要比从硬盘读写数据要快的多,因此,我们希望所有数据的读取和写入都在内存完成,而内存是有限的,这样就引出了物理内存与虚拟内存的概念. 物理内存就是系统硬件提供的内存大小,是真正的内存,相对于物理内存,在linux下还有一个虚拟内存的概念,虚拟内存就是为了满足物理内存的不足而提出的策略,它是利用磁盘空间虚拟出的一块逻辑内存,用作虚拟内存的磁盘空间被称为交换

linux 内存耗尽的分析

在测试NAS性能,用fstest长时间写,分析性能变差的原因,发现server主机内存使用率很高. 1.首先查看内存 # top -M   top - 14:43:12 up 14 days, 6 min,  1 user,  load average: 8.36, 8.38, 8.41  Tasks: 419 total,   1 running, 418 sleeping,   0 stopped,   0 zombie  Cpu(s):  0.0%us,  0.2%sy,  0.0%ni,

转载:linux内存管理

在系统维护的过程中,随时可能有需要查看 CPU 使用率,并根据相应信息分析系统状况的需要.在 CentOS 中,可以通过 top 命令来查看 CPU 使用状况.运行 top 命令后,CPU 使用状态会以全屏的方式显示,并且会处在对话的模式 -- 用基于 top 的命令,可以控制显示方式等等.退出 top 的命令为 q (在 top 运行中敲 q 键一次). top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器 可以直接使用top命