top看到的内存有 res shr virt 几种
这几种有不同的意义:
res :
1. 进程当前正在使用的内存,包括比如malloc new等各种方法分配的堆内存,和程序方法调用的栈内存。但是不包括 swap out空间。
2. 包括其他进程的共享空间 。
3. 如果进程申请了10MB的内存,而实际只使用了1MB,那么res增长1MB。这个与virt相反。
4. 共享库的占用内存情况:只统计加载的库文件的所占用的内存的大小
5. res = code + data 占用的内存
shr :除了自身进程的共享内存,也包括其他进程的共享内存。
就算进程只使用了几个共享库,但是会把整个共享库的大小计算进来
swap out之后,这个值会下降
virt:进程需要使用的虚拟内存的大小,包括 库,代码,数据,以及malloc 和new分配的堆空间 和 栈空间的大小 。
如果进程需要申请10MB的内存,实际使用1MB,比如tomcat配置的最大和最小堆空间都是10MB,那么,则会增长10MB,而不是1Mb.
virt = swap + res
原文:http://khaozi.blog.51cto.com/952782/1775044