打印
[其它应用]

初识Linux内存

[复制链接]
48|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
flycamelaaa|  楼主 | 2024-11-14 13:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
当谈到 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内核越来越庞大了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

648

主题

2689

帖子

0

粉丝