vss pss rss 哪个用来内存消耗

作者&投稿:达奚尚 (若有异议请与网页底部的电邮联系)
安卓 哪个应用查看程序CPU占用~

  .一、利用Android API函数查看
  1.1 ActivityManager查看可用内存。
  ActivityManager.MemoryInfo outInfo = new ActivityManager.MemoryInfo();
  am.getMemoryInfo(outInfo);
  outInfo.availMem即为可用空闲内存。
  1.2、android.os.Debug查询PSS,VSS,USS等单个进程使用内存信息
  MemoryInfo[] memoryInfoArray = am.getProcessMemoryInfo(pids);
  MemoryInfo pidMemoryInfo=memoryInfoArray[0];
  pidMemoryInfo.getTotalPrivateDirty();

  getTotalPrivateDirty()
  Return total private dirty memory usage in kB. USS

  getTotalPss()
  Return total PSS memory usage in kB.
  PSS
  getTotalSharedDirty()
  Return total shared dirty memory usage in kB. RSS

  二、直接对Android文件进行解析查询,
  /proc/cpuinfo系统CPU的类型等多种信息。
  /proc/meminfo 系统内存使用信息
  如
  /proc/meminfo
  MemTotal: 16344972 kB
  MemFree: 13634064 kB
  Buffers: 3656 kB
  Cached: 1195708 kB
  我们查看机器内存时,会发现MemFree的值很小。这主要是因为,在linux中有这么一种思想,内存不用白不用,因此它尽可能的cache和buffer一些数据,以方便下次使用。但实际上这些内存也是可以立刻拿来使用的。
  所以 空闲内存=free+buffers+cached=total-used
  通过读取文件/proc/meminfo的信息获取Memory的总量。
  ActivityManager. getMemoryInfo(ActivityManager.MemoryInfo)获取当前的可用Memory量。

  

  三、通过Android系统提供的Runtime类,执行adb 命令(top,procrank,ps...等命令)查询
  通过对执行结果的标准控制台输出进行解析。这样大大的扩展了Android查询功能.例如:
  final Process m_process = Runtime.getRuntime().exec("/system/bin/top -n 1");
  final StringBuilder sbread = new StringBuilder();
  BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(m_process.getInputStream()), 8192);

  # procrank
  Runtime.getRuntime().exec("/system/xbin/procrank");
  内存耗用:VSS/RSS/PSS/USS
  Terms
  ? VSS - Virtual Set Size 虚拟耗用内存(包含共享库占用的内存)
  ? RSS - Resident Set Size 实际使用物理内存(包含共享库占用的内存)
  ? PSS - Proportional Set Size 实际使用的物理内存(比例分配共享库占用的内存)
  ? USS - Unique Set Size 进程独自占用的物理内存(不包含共享库占用的内存)
  一般来说内存占用大小有如下规律:VSS >= RSS >= PSS >= USS
  USS is the total private memory for a process, i.e. that memory that is completely unique to that process.USS is an extremely useful number because it indicates the true incremental cost of running a particular process. When a process is killed, the USS is the total memory that is actually returned to the system. USS is the best number to watch when initially suspicious of memory leaks in a process.
转载

swap查看有很多种方法,一一介绍下:

1.free

free -m

就能看出当前系统所使用的swap了。那么如何查看哪些进程使用了swap呢,这样好针对性的做出优化。

2.top
Centos(6.0之前):

top只能看到swap总使用量

网上很多人说top+f+p能显示出来swap。可是按完f查看的时候,man top里面swap的解释是:

并不是实际的使用swap。而是VIRT-RES得来的。用我蹩脚的英文翻译就是,虚拟内存中所使用过的swap部分

3.Centos(6.0之后):

man top

这样就明显看出是取出的每个进程的swap,能很方便的查看哪些进程使用了swap。从中也能看到一个信息。那就是读取了/proc/#/status

4.vmstat
vmstat -n 1也能查看到

仍旧无法查看到哪些进程使用了。但是能看到si、so

Memory(内存):

swpd: 使用虚拟内存大小

free: 可用内存大小

buff: 用作缓冲的内存大小

cache: 用作缓存的内存大小

Swap:

si: 每秒从交换区写到内存的大小

so: 每秒写入交换区的内存大小

5.shell
在Linux内核 2.6.16中引入了一个系统内存接口特性,这个接口位于/proc/$pid/目录下的smaps文件中 ,一看内容发现是进程内存映像信息,比同一目录下的maps文件更详细些。

cat /proc/1/smaps

这里解释下samps里面的内容:
bfdca000-bfddf000 是该虚拟内存段的开始和结束位置

rw-p 内存段的权限,rw是指可读写,p是指私有,如果是s则为共享
bffea000 该虚拟内存段在对应的映射文件中的偏移量
00:00 文件的主设备和次设备号
0 被映射到虚拟内存的文件的索引节点号
[stack] 被映射到虚拟内存的文件名称
Size 是进程使用内存空间,并不一定实际分配了内存(VSS)

Rss是实际分配的内存(不需要缺页中断就可以使用的)

Shared_Clean 和其他进程共享的未改写页面

Shared_Dirty 和其他进程共享的已改写页面

Private_Clean 未改写的私有页面页面

Private_Dirty 已改写的私有页面页面

Swap 存在于交换分区的数据大小(如果物理内存有限,可能存在一部分在主存一部分在交换分区)

Pss是平摊计算后的使用内存(有些内存会和其他进程共享,例如mmap进来的)

  RSS列表示,程序占用了多少物理内存。
  虚拟内存可以不用考虑,它并不占用实际物理内存。
  (2)。
  top命令也可以其中VIRT(或VSS)列表示,程序占用了多少虚拟内存。
  同psaux中的VSZ列RES列表示,程序占用了多少物理内存。
  同psaux中的RSS列2.在linux下,查看当前系统占用了多少内存,一般的命令是free其中,free就是系统还有多少内存可以使用。
  但由于linux系统对内存使用有一个原则,就是,内存是宝贵的,能使用多少就使用多少。
  所以,linux会把已经调用过的包缓存起来,放在内存里。
  这样,实际上,可以使用的内存,就可以理解为,free+buffers+cached3.当了解完这些命令以后,再去使用psaux命令去查看的时候,会发现一个奇怪的现象。
  所有的RSS列的数据,加起来,比物理内存的数要大很多。
  比如,物理内存为2G,而RSS列的数据加起来,可能有5个G之多,这是怎么回事了?这是因为RSS列的值骗了。
  linux的内存机制是这样的:在运行一个程序时,linux会调用该程序依赖的链接库,如lib.xx.so。
  首先看该链接库是否被映射进内存中,如果没有被映射,则将代码段与数据段映射到内存中,否则只是将其加入进程的地址空间。
  这样,当N个程序,依赖到lib.xx.so的时候,实际上,内存中只有一个lib.xx.so,而不是N个。
  而RSS在显示一个程序占用的实际物理内存时,将lib.xx.so也算了进来。
  比如,X程序,本身占用内存为5M,lib.xx.so占用内存2M,lib.xx.so被N个程序共享依赖。
  则RSS显示为,X程序运行,占用内存为7M。
  实际上,X程序占用了5M空间。
  多余的2m被讨入到RSS中了。
  当在用psaux显示内存占用情况时,N个共享依赖lib.xx.so的N个程序,都把这2m空间,算在自己的RSS中了,这样RSS的sum值,就比实际物理内存多了。
  当然,linux的内存使用机制很复杂,不是一句两句能说清楚的。
  这里只是简单的说明了一下,psaux中的RSS值,并不能真实反映物理内存的使用情况。
  4.如果查看更详细的内存使用情况,可用以下几种方法,或者几种方法结合使用:这几种方法,都需要root账户的权限(1)。
  pmap-d$pid$pid是正在运行的程序的pid(2)。
  cat/proc/$pid/smapssmaps的数据比较详细,可简单的归纳一下,归纳的命令如下:cat/proc/$pid/smaps|awk'/Size|Rss|Pss|Shared|Private|Referenced|Swap/{val_name=gensub(/([a-zA-Z_]*)。
  */,“\\1”,1,$1);list[val_name]+=$2;}END{for(valinlist)printval,list[val];}‘(3)。
  cat/proc/$pid/maps(4)。
  cat/proc/$pid/statm输出解释第一列size:任务虚拟地址空间大小
  第二列Resident:正在使用的物理内存大小
  第三列Shared:共享页数
  第四列Trs:程序所拥有的可执行虚拟内存大小
  第五列Lrs:被映像倒任务的虚拟内存空间的库的大小
  第六列Drs:程序数据段和用户态的栈的大小
  第七列dt:脏页数量(5)。
  vmstat这个命令据说也可以提供一些参考信息,具体还未研究5.作为phper,尝试过使用php的函数memory_get_usage(),该函数也不能得到php当前运行的程序,实际的,真正占用的内存数量。
  如果真想得到,php真正占用的内存,大概只能在,程序运行的开始,执行一次memory_get_usage()。
  在程序运行结束,执行一次memory_get_usage()。
  将两者的值相减,得到的值,应该是一个相对比较准确的,内存占用数量了。
  这个方法还没有测试,考虑到,得到这个数量,也没有实际意义,加上平时又比较忙,懒得试了。


天心区17528361198: vss pss rss 哪个用来内存消耗 -
机易心可: RSS列表示,程序占用了多少物理内存.虚拟内存可以不用考虑,它并不占用实际物理内存.(2).top命令也可以其中VIRT(或VSS)列表示,程序占用了多少虚拟内存.同psaux中的VSZ列RES列表示,程序占用了多少物理内存.同...

天心区17528361198: CSS跟RSS有什么不同? -
机易心可: css是用来控制网页的风格的,与写在网页中的STYLE一样,而rss的扩展名一般是xml,是用来存放一些数据,相当于数据库,用来订阅,提交到搜索引擎,这样更容易被收录

天心区17528361198: 安卓 哪个应用查看程序CPU占用 -
机易心可: .一、利用Android API函数查看1.1 ActivityManager查看可用内存.ActivityManager.MemoryInfo outInfo = new ActivityManager.MemoryInfo();am.getMemoryInfo(outInfo);outInfo.availMem即为可用空闲内存.1.2、android.os.Debug查询PSS,...

天心区17528361198: vss是什么干嘛用的? -
机易心可: VSS 的全称为 Visual Source Safe .作为 Microsoft Visual Studio 的一名成员,它主要任务就是负责项目文件的管理,几乎可以适用任何软件项目.源代码版本控制机制是现代软件开发中必不可少的管理机制之一,通常借助版本控制软件即...

天心区17528361198: adb shell procrank 怎么用 -
机易心可: 手机中的sh是经过精简过的,有些手机可能没有 procrank 命令,可以使用genymotion模拟器,或是自己安装procrank命令.使用procrank时,命令行的输出入下图:可以看到,在linux下表示内存的耗用情况有四种不同的表现形式: VSS - Virtual...

天心区17528361198: RSS是什么,有什么用 -
机易心可: RSS(简易信息聚合,也叫聚合内容)是一种描述和同步网站内容的格式.RSS可以是以下三个解释的其中一个: Really Simple Syndication;RDF (Resource Description Framework) Site Summary; Rich Site Summary.但其实这三个解释都是指...

天心区17528361198: 求助系统监控glance,sar命令常用使用方法 -
机易心可: HP-UX上glance, top和ps察看进程内存数据之间的关系及计算 常常有人会问,在HP-UX上面,采用glance,top,ps等工具察看进程的内存情况,各个数据之间的关系比较混乱,常常不能明白各个数值之间的关系,现在对此作一个简要的说明.在每...

天心区17528361198: BBS RSS都是什么概念?
机易心可: 一、什么是RSS? 也许大家是第一次听到RSS这个概念,那什么是RSS呢?RSS是站点用来和其他站点之间共享内容的一种简易方式(也叫聚合内容),通常被用于新闻和其他按顺序排列的网站,例如Blog.一段项目的介绍可能包含新闻的全...

天心区17528361198: 什么是RSS? -
机易心可: RSS是一种用于网上新闻频道、博客(weblogs)和其他Web内容的数据交换规范,起源于网景通讯公司的推技术(push technology),将订户订阅的内容传送给他们的通讯协同格式(Protocol).RSS可以是以下三个解释的...

天心区17528361198: 谁知道RSS是什么意思! 是哪几个英语字母的缩写! -
机易心可: 什么是RSSRSS是站点用来和其他站点之间共享内容的一种简易方式,通常被用于新闻和其他按顺序排列的网站,例如Blog.一段项目的介绍可能包含新闻的全部介绍等.或者仅仅是额外的内容或者简短的介绍.这些项目的链接通常都能链接...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网