进程占用的内存可以有以下这些类型:自身的代码

共享库的代码

运行过程分配的堆和栈

通过mmap映射的磁盘文件内容

1. 虚拟内存与物理内存

这里要区分两个概念,虚拟内存和物理内存。物理内存对于进程来说是透明的,进程直接操作的是虚拟内存。而数据和代码是存放在真实的物理内存的,之所以进程在虚拟内存中寻址可以获取数据,是由于虚拟内存与物理内存存在着映射关系。

当我们的进程向系统申请内存时,比方通过malloc方法,得到的其实是虚拟内存,假如进程没有使用这些虚拟内存,那么它们是不会和物理内存关联起来的。比方假如我们malloc 10MB的内存,但是只用了一个byte的,那么进程实际得到的只有一个页的物理内存,也就是4096byte的内存空间。当物理内存被换出到磁盘(swap out),虚拟内存对应的地址还是有效的,假如寻址到这些地址,对应的物理内存就会被换入到内存(swap in)。

虚拟内存是连续的,而物理内存却不肯定。

2. 共享的内存

从进程自身的角度看,虚拟内存是进程独立的,所有内存都是私有的,包括自身代码、共享库、堆栈等,它不用关心共享内存的事情。但实际上在物理内存的层面,很多东西是可以共享的,比方共享的代码库(.so)、自身代码甚至是自身运行时私有的堆栈内存。

2.1 共享库

同一个共享库的代码在物理内存中只会存在一份,这块内存会映射到不同进程的虚拟内存中,对各个进程来说,就像是自己私有的内存一样,而对于系统来说,则是节省了内存的资源。

2.2 进程自身的代码

同样,同一份代码运

linux ps vsz malloc,认真分析下进程的内存,说说VSZ、RSS、PSS相关推荐

  1. linux ps -ef哪一位是进程号,Linux ps 命令详解

    (此文章为收集网络IT达人们博文中有用信息后,整理出来的,感谢他们)(PS:追加感谢 by lxrm) ps  aux详细解释ps aux 显示其他用户启动的进程(a) 查看系统中属于自己的进程(x) ...

  2. 操作系统知识整理——Linux下进程的内存布局以及brk()、sbrk()函数探究

    文章目录 前言 一.内存堆栈模型 二.系统栈和用户栈 三.函数调用时的内存栈分配 四.brk(), sbrk() 用法详解 前言 本篇文章是自己在学习xv6操作系统内核时,发现自己对进程在内存中的布局 ...

  3. Linux进程里运行新代码,linux调度器源码分析 - 新进程加入(三)

    中专门描述了copy_process()这个创建函数,而里面有一个函数专门用于进程调度的初始化,就是sched_fork(),其代码如下 int sched_fork(unsigned long cl ...

  4. linux 程序收到sigsegv信号_linux下定位多线程内存越界问题实践总结

    最近定位了在一个多线程服务器程序(OceanBase MergeServer)中,一个线程非法篡改另一个线程的内存而导致程序core掉的问题.定位这个问题历经曲折,尝试了各种内存调试的办法.往往感觉就 ...

  5. linux ps 命令的结果中VSZ,RSS,STAT的含义和大小

    linux ps 命令的结果中VSZ,RSS,STAT的含义和大小 ps是linux系统的进程管理工具,相当于windows中的资源管理器的一部分功能. 一般来说,ps aux命令执行结果的几个列的信 ...

  6. linux vss rss区别,关于VSS / RSS / PSS / USS的解释是否准确?

    我阅读了有关VSS / RSS / PSS / USS的说明: 这篇文章的目的是提供信息,以帮助解释来自各种工具的内存报告,以便可以确定Linux进程和系统的实际内存使用情况. Android有一个称 ...

  7. MacOS怎么查看进程占用内存是多少

    一.背景 在Linux下可以使用 free 命令来方便的查看内存占用情况,如 free -g.free -m等,但MacOS下没有这个命令. 既然如此,那么MacOS里是否有类似的工具呢? 而我们又该 ...

  8. linux ps与top 命令下wa,hi,si,st等及 VSZ,RSS,VIRT,RES,等关键字含义详解!

    Linux中ps与top命令 这两个命令都是查看系统进程信息的命令,但是用处有点儿不同 一:.ps命令–提供系统过去信息的一次性快照 也就是说ps命令能够查看刚刚系统的进程信息  命令:ps aux或 ...

  9. linux ps vsz malloc,Linux proc 内存

    ps:html USER      PID    %CPU %MEM   VSZ   RSS  TTY  STAT  START  TIME  COMMAND root          4238   ...

最新文章

  1. oracle审计的激活与取消
  2. 如何解决局域网内传输速度过慢问题
  3. adb命令 android 串口_ADB使用linux命令查看Android的使用情况
  4. SpringBoot集成Spring Security(二)注册 、密码加密、修改密码
  5. 知识管理java_java面试题 - 集合框架
  6. MySQL数据库(三)
  7. Ionic项目中如何使用Native Camera
  8. 管理小故事精髓 100例
  9. 易班自动答题脚本_自动答题脚本教程及源码分享(无视分辨率)
  10. macOS 安装 Win11 常见问题及解决方案
  11. 批处理系统、分时操作系统、实时操作系统
  12. Syntax Error: Error: No ESLint configuration found Syntax Error: TypeError: eslint.CLIEngine i
  13. pacman入门使用指南
  14. requests、xpath应用案例
  15. JS格式化中国标准时间
  16. 安装win2003 R2 SP2 x64 可用密钥
  17. java c HTML,javac html标签
  18. 简述python文件操作_Python 文件操作
  19. pytest之Monkeypatching(猴子补丁)
  20. OrientDB 图状数据库示例

热门文章

  1. 华为OD机试题 - 员工出勤(JavaScript)| 机考必刷
  2. 区块链码农飙车 | FISCO BCOS的性能优化方案最全解密
  3. 100个python算法超详细讲解:梅森素数
  4. 诗配画—泰戈尔情诗欣赏(转载)
  5. 因不愿开放第三方支付,苹果被罚3.1635亿人民币
  6. utf—8在苹果手机上乱码_如何解决iPhone5S电话本导入乱码的情况
  7. CSS中详解height属性
  8. 在web上呈现3D的语言VRML
  9. 普通用户如何加入鸿蒙,普通用户角度,谈论一下关于鸿蒙OS系统相关体验
  10. FTP传输速度慢分析及解决