flycamelaaa 发表于 2024-11-14 13:32

初识Linux内存

当谈到 Linux 进程内存时,有几个重要的概念需要理解:VSS、RSS、PSS、USS。
[*]「虚拟耗用内存(VSS)」:VSS 表示进程虚拟地址空间的大小,即进程可以访问的所有虚拟内存区域的总和。这包括代码、数据、堆、栈等。在简单术语中,你可以把它看作进程拥有的所有内存空间的大小。
[*]「驻留集大小(RSS)」:RSS 表示进程当前实际使用的物理内存大小,即进程实际占用的物理内存量。这个指标更直接地反映了进程实际使用的内存量。
[*]「比例集大小(PSS)」:PSS 是一个计算值,表示进程实际使用的物理内存大小,但是按照共享内存的比例进行分摊。如果多个进程共享一块内存,那么这块内存的 PSS 值将被平均分摊到各个进程。
[*]「唯一集大小(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; // 在分配的内存中存储数据
    }

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

    free(ptr); // 释放内存

    return 0;
}
这个程序分配了100个整型的内存空间,存储了数据后等待30秒然后释放内存。工具查看程序的内存使用情况:
[*]「top」:在终端中运行 top 命令,可以查看系统中运行的进程列表以及各个进程的内存使用情况。
[*]「ps」:使用 ps 命令可以列出进程的信息,包括进程的 VSS、RSS 等内存指标。ps -o pid,vsize,rss,cmd -p <进程ID>

[*]「pmap」:pmap 命令可以显示进程的内存映射表,包括各个内存区域的大小和权限。pmap -x <进程ID>

[*]「smem」:smem 命令可以按照 RSS 或 PSS 等指标对进程进行排序,并显示进程的内存使用情况。smem -p -c "pid vss rss pss uss name" | grep <进程名>


weifeng90 发表于 2024-11-14 17:22

现在Linux内核越来越庞大了

szt1993 发表于 2024-11-20 10:40

linux系统是现在系统的首选

飘向北方 发表于 2024-11-21 15:40

Linux内存管理是系统性能的关键之一。了解Linux内存的基本概念和管理机制,有助于用户更好地管理和优化系统性能,提高系统的稳定性和响应速度。
页: [1]
查看完整版本: 初识Linux内存