1. Virtual Address space 虚拟地址空间

一个应用程序能够访问的最大的内存地址空间, 32位的机器上面最大的就是4GB 但是 并不是所有的内存都放到主存里面, 可能放到pagefile里面

windows和linux对操作系统的管理都有内核态和用户态, 针对的虚拟地址位置也是不同的.

2. Phiscal memory 物理内存

实际内存, 物理内存. 一般情况下物理内存越大的机器性能越好一些.内存的延迟一般是100ns左右 磁盘的是10ms左右 相差10万倍

3. Reserved memory 保留内存

应用程序调用win32 API 申请到的一块虚拟内存空间, 只是保留出来的一块地址空间,并不是真正的物理地址空间, 如果空间已经被其他程序使用还去访问的话 会出现 access violation错误提示.

4. Committed memory

提交内存 将预先保留的 reserved的内存页面正式提交commit使用.提交的页面在访问时最终转换到了物理内存上面去.提交内存是正式在物理内存中申请一段空间,向页面写入数据.

5.Shared memory

共享内存 Windows 提供了在进程和操作系统间共享内存的机制, 共享内存 可以定义为对一个以上的进程都可见的内存. COPY ON WRITE 应该也是使用类似的技术来实现 一个进程中的文本区 可以作为共享使用, 数据区域是私有的.(后面一段是自己的理解)

6. Private memory

某个进程 已经committed memory中 非共享的部分

7. Working set 工作集

某个进程中的内存 存放到物理内存中的一部分 理解的应该是commit过后的那部分reserved内存.

8. Page fault 页面错误

有soft 和hard 两种页面错误,

Hard fault 只是的是 VAS里面的地址空间不存在物理内存中,而是放到了pagefile里面去, 需要通过一个物理IO将硬盘上面的内容读入到内存中name就是一个硬错误

如果想要访问的内存地址在物理内存中 只是没有放到working set中 需要做一次重定向 定位到正确的内存位置

因为内存比硬盘快数万倍,所以应该主要关注 hard fault 如果经常出现 这样的错误 会导致CPU占用率较高 并且响应变慢

因为IO是内核态操作, 需要用户态和内核态切换, 上下文切换和物理IO都是非常高的成本

9. System Workting set

这是windows系统需要使用的物理内存

主要分类:

System cache、Non paged pool、Paged pool、System mapped views

System cache 系统高速缓存

用户映射系统高速缓存打开的文件页面,用于提高磁盘的IO速度 性能监视器中的 memory Cache Resident Bytes 来监控

Non Paged Pool 非页交换区

保证一直存在于物理内存中, 并且可以通过 Memory: Pool nopaged Bytes来监控

应该是被所有的进程共享, 存放对象指针等

Paged pool 页交换区

系统空间中能够换入换出到磁盘上面的工作集虚拟地址空间

Stack

每个线程有两个栈,一个给内核模式,一个给用户模式,每个栈都是一快内存区域,用于存放线程运行的过程或函数的调用地址,以及所有的参数值( 这个是完全抄的 跟之前的理解不一样)

In process

运行在同一个进程的地址空间里, 比如将dll 加载到内存 好处是速度快不需要进行context switch, 坏处是容易出现错误 影响安全性

Out of process

运行在不通的进程地址空间里,比如驱动或者w3wp 运行在单独的进程空间

Memory leak

内存泄露 一直不断的保留reserver 或者是提交commit内存资源,哪怕他们不再使用,也不释放给其他用户使用.

[书摘]Windows内存管理术语的更多相关文章

  1. Windows内存管理[转]

    本文主要内容:1.基本概念:物理内存.虚拟内存:物理地址.虚拟地址.逻辑地址:页目录,页表2.Windows内存管理3.CPU段式内存管理4.CPU页式内存管理 一.基本概念1. 两个内存概念物理内存 ...

  2. windows内存管理方式以及优缺点

    Windows内存管理方式:页式管理,段式管理,段页式管理 页式管理 将各进程的虚拟空间(逻辑地址)划分为若干个长度相等的页,业内管理把内存空间(物理内存)按照页的大小划分为片或者页面,从而实现了离散 ...

  3. windows 内存管理的几种方式及其优缺点

    windows 内存管理方式主要分为:页式管理,段式管理,段页式管理. 页式管理的基本原理是将各进程的虚拟空间划分为若干个长度相等的页:页式管理把内存空间按照页的大小划分成片或者页面,然后把页式虚拟地 ...

  4. 全面介绍Windows内存管理机制及C++内存分配实例(四):内存映射文件

    本文背景: 在编程中,很多Windows或C++的内存函数不知道有什么区别,更别谈有效使用:根本的原因是,没有清楚的理解操作系统的内存管理机制,本文企图通过简单的总结描述,结合实例来阐明这个机制. 本 ...

  5. Windows内存管理的方式

    一.内存的概念 1. 物理内存:即插在主板上的内存条.他是固定的,内存条的容量多大,物理内存就有多大(集成显卡系统除外). 但是如果程序运行很多或者程序本身很大的话,就会导致大量的物理内存占用,甚至导 ...

  6. 20140919 进程间通信 系统栈 用户栈 多级反馈队列 windows 内存管理

    1.进程间通信 共享内存(剪切板) 匿名管道只能实现父子进程间的通信(以文件系统为基础): 匿名管道是什么,有什么用,怎么用 1.创建父进程,也就是在解决方案中建立一个parent的工程 2.在par ...

  7. 全面介绍Windows内存管理机制及C++内存分配实例

    转自:http://blog.csdn.net/yeming81/article/details/2046193 本文基本上是windows via c/c++上的内容,笔记做得不错.. 本文背景: ...

  8. Windows内存管理

    本博文很大程度上参考了,潘爱民先生的<Windows内核原理与实现>一书,在此对他表示感谢. 记得是在学C语言指针的时候,首次比较实际的使用内存寻址.也是在那个时候知道不能使用未初始化的指 ...

  9. Windows内存管理简介:

    1:连续的内存空间分配: (1)单一连续分配:只能单作业,单任务运行: 分为系统和用户区:用户区是指除了系统需外左右的内存,由于单用户,单任务,要不都被占用,要不全空   (2):固定空间分配:固定分 ...

随机推荐

  1. Tomcat 9.0 配置问题 403 Access Denied

    tomcat9.0 管理页面如:http://10.10.10.10:8080/manager/html出现如下错误: 403 Access Denied 1.需要配置: Tomcat/conf/to ...

  2. mybatis基础系列(二)——基础语法、别名、输入映射、输出映射

    增删改查 mapper根节点及其子节点 mybatis框架需要读取映射文件创建会话工厂,映射文件是以<mapper>作为根节点,在根节点中支持9个元素,分别为insert.update.d ...

  3. VsCode插件开发之插件初步通信

    参考了Egret Wing,想像Egret Wing那样在上方titlebar最右边上面增加一个menu(这个menu相对于一个按钮,当点击这个按钮时会出现一个window弹框,这个window弹框里 ...

  4. 使用Nginx来解决跨域的问题

    使用Nginx来解决跨域的问题 nginx的版本:(查看nginx命令: /usr/local/nginx/sbin/nginx -v) nginx/1.4.3 问题是:前端项目域名是 a.xxxx. ...

  5. 原生js函数的伪重载

    一.我们在学习java的时候,其中方法有一个比较的重要的特性重载,根据传入的参数的个数来执行不同的方法,而方法其根据签名来判断,而JavaScript却不能根据方法的签名来进行重载,只能通过参数的个数 ...

  6. JavaScript模块化思想

    1. 首先,我们需要明白为什么要用模块化? 功能都是为了解决需求的.模块化可以带来的优点有以下几点: (1)可维护性.举个例子,如果我们把未使用模块化的代码比作油和水混合在了一起,模块化之后的代码就好 ...

  7. AI 隐马尔科夫模型

    隐马尔科夫模型(Hidden Markov Model,简称HMM),

  8. Winform 基础二 最小化 最大化 关闭 点击任务栏隐藏显示 点击鼠标左键移动窗体

    一 最大化 二 最小化 三 关闭 四 点击任务栏隐藏显示 五 点击鼠标左键移动窗体 六 阴影效果鼠标左键移动窗口 #region UI设置 最大化.最小化.关闭.鼠标移动窗口.点击任务栏切换窗口 th ...

  9. ESP32 ADC

    2个12位的ADC,共计18通道,ADC2比较特殊的一点就是:ADC2和wifi共用,wifi的优先级更高,所以ADC2只有在WIFI模块不用的情况下好使: 在读取ADC数据之前,必须先对ADC进行设 ...

  10. Android学习之基础知识三(Android日志工具Log的使用)

    Android中的日志工具Log(android.util.Log): 1.打印日志的方法(按级别从低到高排序): Log.v():级别verbose,用于打印最为烦琐,意义最小的日志 Log.d() ...