初识Linux内存

文摘   2024-10-09 07:30   内蒙古  

当谈到 Linux 进程内存时,有几个重要的概念需要理解:VSS、RSS、PSS、USS。

  1. 「虚拟耗用内存(VSS)」:VSS 表示进程虚拟地址空间的大小,即进程可以访问的所有虚拟内存区域的总和。这包括代码、数据、堆、栈等。在简单术语中,你可以把它看作进程拥有的所有内存空间的大小。

  2. 「驻留集大小(RSS)」:RSS 表示进程当前实际使用的物理内存大小,即进程实际占用的物理内存量。这个指标更直接地反映了进程实际使用的内存量。

  3. 「比例集大小(PSS)」:PSS 是一个计算值,表示进程实际使用的物理内存大小,但是按照共享内存的比例进行分摊。如果多个进程共享一块内存,那么这块内存的 PSS 值将被平均分摊到各个进程。

  4. 「唯一集大小(USS)」:USS 表示进程独占的物理内存大小,即进程独自使用的物理内存量。这个指标可以帮助你了解进程独占的内存量。

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

int main() {
    int *ptr = malloc(100 * sizeof(int)); // 分配100个整型的内存空间
    if (ptr == NULL) {
        printf("内存分配失败\n");
        return 1;
    }

    for (int i = 0; i < 100; i++) {
        ptr[i] = i; // 在分配的内存中存储数据
    }

    sleep(30); // 模拟程序运行一段时间

    free(ptr); // 释放内存

    return 0;
}

这个程序分配了100个整型的内存空间,存储了数据后等待30秒然后释放内存。

工具查看程序的内存使用情况:

  1. 「top」:在终端中运行 top 命令,可以查看系统中运行的进程列表以及各个进程的内存使用情况。

  2. 「ps」:使用 ps 命令可以列出进程的信息,包括进程的 VSS、RSS 等内存指标。

    ps -o pid,vsize,rss,cmd -p <进程ID>
  3. 「pmap」pmap 命令可以显示进程的内存映射表,包括各个内存区域的大小和权限。

    pmap -x <进程ID>
  4. 「smem」smem 命令可以按照 RSS 或 PSS 等指标对进程进行排序,并显示进程的内存使用情况。

    smem -p -c "pid vss rss pss uss name" | grep <进程名>

    参考
    https://blog.csdn.net/xingjingb/article/details/132000713


兄弟嵌入式
从入门到精通,学习并分享嵌入式软、硬件的知识。
 最新文章