在Linux内核 2.6.16中引入了一个系统内存接口特性,这个接口位于/proc/$pid/目录下的smaps文件中
,一看内容发现是进程内存映像信息,比同一目录下的maps文件更详细些。
400df000-4048c000 r--s 00000000 1f:05 286 /data/dalvik-cache/system@framework@core.jar@classes.dex
Size: 3764 kB
Rss: 1804 kB
Pss: 1804 kB
Shared_Clean: 0 kB
Shared_Dirty: 0 kB
Private_Clean: 1804 kB
Private_Dirty: 0 kB
Referenced: 1804 kB
Anonymous: 0 kB
Swap: 0 kB
KernelPageSize: 4 kB
MMUPageSize: 4 kB
以上述输出结果为例:400df000-4048c000 r--s 00000000 1f:05 286 /data/dalvik-cache/system@framework@core.jar@classes.dex
-
400df000-4048c000 是该虚拟内存段的开始和结束位置
-
r--s内存段的权限,最后一位p代表私有,s代表共享
-
00000000 该虚拟内存段在对应的映射文件中的偏移量
-
1f:05 文件的主设备和次设备号
-
286 被映射到虚拟内存的文件的索引节点号
-
/data/dalvik-cache/system@framework@core.jar@classes.dex 被映射到虚拟内存的文件名称。后面带(deleted)的是内存数据,可以被销毁。
-
size 是进程使用内存空间,并不一定实际分配了内存(VSS)
-
Rss是实际分配的内存(不需要缺页中断就可以使用的)
-
Pss是平摊计算后的使用内存(有些内存会和其他进程共享,例如mmap进来的)
-
Shared_Clean 和其他进程共享的未改写页面
-
Shared_Dirty 和其他进程共享的已改写页面
-
Private_Clean 未改写的私有页面页面
-
Private_Dirty 已改写的私有页面页面
-
Referenced 标记为访问和使用的内存大小
-
Anonymous 不来自于文件的内存大小
-
Swap 存在于交换分区的数据大小(如果物理内存有限,可能存在一部分在主存一部分在交换分区)
-
KernelPageSize 内核页大小
-
MMUPageSize MMU页大小,基本和Kernel页大小相同
其中Dirty页面如果没有交换机制的情况下,应该是不能回收的。
精确分析内存占用可以用Private内存信息来衡量。
详细解释见 http://www.kernel.org/doc/Documentation/filesystems/proc.txt
The first of these lines shows the same information as is displayed for the
mapping in /proc/PID/maps. The remaining lines show the size of the mapping
(size), the amount of the mapping that is currently resident in RAM (RSS), the
process' proportional share of this mapping (PSS), the number of clean and
dirty private pages in the mapping. Note that even a page which is part of a
MAP_SHARED mapping, but has only a single pte mapped, i.e. is currently used
by only one process, is accounted as private and not as shared. "Referenced"
indicates the amount of memory currently marked as referenced or accessed.
"Anonymous" shows the amount of memory that does not belong to any file. Even
a mapping associated with a file may contain anonymous pages: when MAP_PRIVATE
and a page is modified, the file page is replaced by a private anonymous copy.
"Swap" shows how much would-be-anonymous memory is also used, but out on
swap.
分享到:
相关推荐
smaps解析-maps文件
本文将深入探讨Linux内存结构和JVM内存模型,以及如何通过提供的文件来分析它们。 首先,让我们了解Linux内存结构。Linux内存主要分为以下几个部分: 1. **物理内存**:这是计算机硬件中的RAM,用于存储正在运行的...
在硬件方面,Smaps4000M智能控制器配备有十路电源控制和两台外设控制接口,可以根据作息项目的播放前后自动开关设备电源。同时,系统还能定时启动或停止两台外部设备的播放。此外,该系统具有8路矩阵输出,可以向...
在Linux操作系统中,`/proc`目录是一个非常特殊且重要的虚拟文件系统,它提供了一种方式来查看和交互内核的状态。标题中的“Linux_kernel_proc.rar_linux memory proc”表明我们将探讨如何通过`/proc`来理解和分析...
Linux常用命令 # 按 VmSwap 使用量对进程排序,输出进程名称、进程 ID 以及 SWAP 用量 $ for file in /proc/*/status ; do awk '/VmSwap|Name|^Pid/{printf $2 " " $3}END{ print ""}' $file; done | sort -k 3 -n -...
proc(5)是 Linux 系统中的一个伪文件系统,它提供了进程信息的接口,挂载在/proc目录下。该目录下的文件大多数是只读的,但某些文件也允许内核变量被修改。 proc(5)的主要组成部分包括: 1. /proc/[number]/...
smemcap 是arm v7 嵌入式环境用来cap smaps ,capture的资料在pc 端用smem 分析
服务器端支持通用的体系结构和分发。 除浏览器外,我们还为许多系统(例如android / ios / windows / linux / mac os)提供客户端应用程序。 产品特点: 一页查看CPU,内存,磁盘,网络使用情况 支持单CPU使用率...
在Linux和UNIX系统中,"proc"是一个虚拟文件系统,它提供了系统内核状态的实时视图,包括进程信息、内存状态、CPU统计等。"procres"可能是指处理与"proc"文件系统相关的资源或程序。在源码中,我们可以期待看到如何...
简洁的思想,提供互动地图、卫星图像。查找周边商家信息、行车及公交路线。... Google 地图实验室 | 帮助转到Google Maps首页 正在载入...获取路线 ... 报告问题,这些问题都得到源码性解释说明
然后,它获取到目标进程的PID,并确定相应的`/proc`目录下的`smaps`和`status`文件,这两个文件包含了进程的内存使用详细信息。 接下来,脚本进入一个无限循环,每秒检查一次进程的内存使用情况。在循环内部,它...
- `awk '/Swap:/{a=a+$2}END{print "$i",a/1024"M"}`:读取 `/proc/$i/smaps` 文件,这个文件包含了进程的内存映射信息,包括每个映射区域的swap使用情况。当遇到 `Swap:` 行时,将第二列(即swap的大小)累加到...
- `-X`: 显示更详细的信息,格式可能会根据 `/proc/PID/smaps` 文件改变。 - `-XX`: 显示内核提供的所有信息。 - `-c` 或 `--read-rc`: 读取默认的配置文件。 - `-C` 或 `--read-rc-from=<file>`: 从指定的文件读取...
首先,脚本定义了一个名为`getpidmem`的函数,其目的是解析`/proc/<pid>/smaps`文件,该文件包含了关于进程内存映射的详细信息。`<pid>`是你要查询的进程ID。 1. **/proc文件系统**:在Linux中,`/proc`是一个虚拟...
除此之外,`/proc/<pid>/smaps` 文件提供了更为细致的内存分布情况。这个文件显示了每个内存映射区域的详细信息,包括每个映射的大小、是否被共享、干净或脏页的数量,以及PSS值。PSS(Proportional Set Size)是一...
9. V1.8:更精确地匹配/proc/$pid/smaps中的统计信息,以防止匹配库文件导致崩溃,补丁来自patrice.bouchand.fedora@gmail.com,发布于2007年9月20日。 10. V1.9:修复了在PSS可用时报告的无效值,报告人是Andrey ...
从`/proc/<pid>/smaps`文件中,我们可以看到栈内存的映射情况: - `090e0000-09101000rw-p0000000000:000[heap]`: 这部分显示了堆内存的映射。 - `b6d1c000-b6d1d000---p0000000000:000`: 显示了栈顶部的一个保护页...
在Linux系统管理中,有效地监控资源使用情况是至关重要的,特别是对于内存的交换空间(swap space)。交换空间是硬盘上的一块区域,当物理内存不足时,操作系统会将部分内存中的数据暂时移动到交换空间,以腾出内存供...