本文主要讲述windows平台下应用程序性能测试的内存相关的知识,通过本文了解内存基本原理和分析内存占用问题。
一、内存是什么?
1.内存分为物理内存和虚拟内存
物理内存指通过物理内存条而获得的内存空间,虚拟内存是计算机系统内存管理的一种技术。它使得应用程序认为它拥有连续的可用的内存(一个连续完整的地址空间)。
2.两者都有系统约定的最大值
进程占用的内存一般是指物理内存,其中操作系统为每个进程的工作集定义了一个最小和最大工作集。每个进程的 工作集有最小工作集(20-50M)最大是45-345M
虚拟内存:每个32位的进程操作系统为其分配最大4G的线性虚拟地址空间,地址是从0X00000000~0XFFFFFFFF 其中低的2G留给进程,高的2G留给系统。
3.查看物理内存和虚拟内存
1)电脑配置
例如我的电脑配置是 :如下,安装的内存是16G。查看资源监视器里显示,所以平时所说的内存占用是指物理内存。
2)内存在资源管理器概念
例如这里进程: 物理内存(工作集)=可共享+专用工作集:是私人工作集中的内存数量与进程正在使用且可以由其他进程共享的内存数量的总和。
专用工作集:- 是工作集的一个子集,专用工作集专门描述了某个进程正在使用的且无法与其他进程共享的内存数量。
提交大小:是为某进程使用而保留的虚拟内存的数量。
3)虚拟内存查看
虚拟内存,用VMMAP工具查看。如下图
具体含义可以去网上搜索。其中虚拟内存有三种状态:
1)自由(free)是指内存还未使用。
2)当申请内存使用VirtualAlloc传入MEM_RESERVE执行预留(reserved)操作。
3)当真正访问内存的数据才执行提交(committed),传入MEM_COMMINT参数。
二、系统如何管理内存
1.系统使用PFN数据库
系统使用PFN(Page Frame Number)数据库来存储物理内存。分几类page list来存储,如下面的图
Freelis