【转】windows任务管理器中的工作设置内存,内存专用工作集,提交大小详解

Windows内存深度调优:从原理到实战,提升大内存应用性能 内存管理是操作系统核心功能之一,它负责在物理内存与存储设备之间高效调度数据。其基本原理涉及工作集、分页与交换机制,旨在平衡多任务需求与有限资源。在工程实践中,默认的保守策略在面对海量数据处理、科学计算等高性能场景时,可能因频繁的硬盘I/O交换而形成瓶颈,导致应用响应迟滞。通过干预内存分配策略、启用大页面支持、调整系统缓存等底层调优手段,可以显著减少不必要的交换操作,将物理内存转化为持续的高性能工作区。这对于机器学习数据集预处理、大型数据库压测、高清视频渲染等需要操作数十GB乃至上百GB内存的专业应用至关重要 阅读详情
AI摘要

本文详细解读Windows任务管理器中的工作集、提交大小概念,通过C++代码实例展示内存分配过程,并解析VirtualAlloc、HeapAlloc与malloc的关系。理解内存专用工作集如何影响进程资源占用。

windows任务管理器中的工作设置内存,内存专用工作集,提交大小详解

各字段官方解释:

  • 提交:操作系统为进程保存的虚拟内存量;
  • 工作集:进程当前正在使用的物理内存量;
  • 可共享:进程当前使用的可与其他进程共享的物理内存量;
  • 专用:进程当前使用的不能被其他进程共享的物理内存量;
    在这里插入图片描述

对各字段的分析:

使用下面的代码进行测试

#include<windows.h>
 
#define UNIT_SIZE (1024 * 1024)
 
int main(int argc, char* argv[])
{
	PVOID bookMem = (PVOID)VirtualAlloc(NULL, 64 * UNIT_SIZE, MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE);
	ZeroMemory(bookMem, 64 * UNIT_SIZE);
 
	HANDLE heap = HeapCreate(0, 64 * UNIT_SIZE, 1024 * UNIT_SIZE);
	PVOID heapMem = HeapAlloc(heap, HEAP_ZERO_MEMORY, 32 * UNIT_SIZE);
 
	char* p = (char *)malloc(64 * UNIT_SIZE);
 
 
	HeapFree(heap, 0, heapMem);
	HeapDestroy(heap);
	free(p);
	
	return 0;
}

首先时VirtualAlloc(…)函数使用MEM_REVERSE | MEM_COMMIT标志同时预定和调拨64MB的物理内存,但是注意,这里调拨的内存是从系统页交换文件进行调拨的,属于保存的虚拟内存,因此这个时候"提交"项的值会增长大概64MB左右。当进程真正使用这段内存的时候系统才会为其分配真正的物理内存,所以执行完ZeroMemory函数后其他三项的值才会增长,另外这里有一个关系是:工作集 = 可共享 + 专用。

VirtualAlloc、HeapAlloc、malloc和new的调用关系如下所示:
在这里插入图片描述

malloc和new都是c运行库中的函数, 当c库被加载进进程地址空间后会首先调用HeapCreate函数创建自建堆,malloc函数和new的调用底层调用了HeapAlloc,但是HeapAlloc也是在页交换文件中进行物理内存的调拨的,为什么malloc函数和new开辟内存的时候工作集的值会增加呢?这是因为malloc函数和new封装了内存初始化的过程,在初始化过程中系统的缺页中断就会导致开辟实际的物理内存了。

————————————————
版权声明:本文为优快云博主「paradox_1_0」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.youkuaiyun.com/paradox_1_0/article/details/103514361

Windows任务管理器内存列:工作集、专用工作集与提交大小拆解 在Windows性能排查中,虚拟内存把进程地址空间、提交额度与物理驻留分开记账:提交只代表向系统认领的内存,触碰后才进入物理内存。任务管理器里的工作集、专用工作集、提交大小正对应物理驻留总量、独占驻留部分和已提交未共享字节,分别用于观察当下压力、横向比较进程占用和识别内存泄漏。理清边界后,做容量规划不会把共享页重复计数,排查泄漏也不会被工作集波动误导。对运维监控、后端服务、桌面应用和普通用户判断电脑卡顿都有直接价值。围绕Windows任务管理器这些内存列,结合性能计数器、验证实验与生产排查经验,逐项拆解工作 阅读详情

相关推荐

Windows 11内存占用高?详解系统缓存、内存压缩与工作集管理

内存管理是现代操作系统的核心功能,其核心原理在于通过动态分配与回收机制,高效利用物理内存资源以提升整体系统性能。这一过程涉及缓存、分页、工作集等多个关键技术,旨在减少对低速存储设备的访问,从而优化应用程序的响应速度与用户体验。在工程实践中,理解内存管理的技术价值至关重要,它能帮助开发者诊断性能瓶颈、避免内存泄漏,并为用户提供更流畅的计算环境。典型的应用场景包括大型软件开发、数据分析、虚拟化以及日常多任务处理,这些场景都对内存的高效利用提出了高要求。本文聚焦于Windows 11操作系统,深入解析其内存管理机

weixin_34062469的博客 532

【操作系统】内存管理(五)—— 内存空间的扩充

覆盖技术用于同一个程序或进程中,交换技术应用于不同进程(作业)中。二、虚拟内存技术基于局部性原理,在程序装入时,可以将程序中很快会用到的部分装入内存,暂时用不到的部分留在外存,就可以让程序开始执行。在程序执行过程中,当所访问的信息不在内存时,由操作系统负责将所需信息从外存调入内存,然后继续执行程序。若内存空间不够,由操作系统负责将内存中暂时用不到的信息换出到外存。在操作系统的管理下,在用户看来似乎有一个比实际内存大得多的内存,这就是虚拟内存。

haoweixl的博客 4713

进程内存监控:提交内存比工作集更能定位异常

内存监控是系统运维与开发排障中的高频需求,但很多人习惯只看任务管理器中的内存百分比,误把工作集当作唯一指标。实际上,物理内存占用会因换页而失真,真正反映进程内存压力的往往是提交内存(Commit Memory)。提交内存是操作系统为进程“记账”的虚拟内存空间,它包含已换出到页面文件的部分,能更完整地呈现进程的真实内存消耗。理解这一原理,有助于区分固定成本、持续泄漏和周期性波动,从而在排查老电脑卡顿、开发环境内存泄漏、服务器进程异常时快速锁定目标进程。围绕系统提交量、进程级提交量聚合、历史趋势三块核心能力,结

weixin_34208185的博客 1076

这个增加系统容量的方法,你知道吗?

通过负载分散,可以提高系统的性能和吞吐量,提升用户体验。在当今云计算环境中,横向扩展已经成为了一种主流的系统架构设计方式,可以满足不断增长的工作负载需求,并提高系统的性能和可靠性。横向扩展(Horizontally Scaling),也常称为“扩展出”或“扩展宽”,是一种增加系统容量的方法,通过在现有的硬件集群中添加更多的机器或节点来实现。在传统的纵向扩展中,一台机器出现故障可能导致整个系统崩溃,而横向扩展通过多个节点的存在,即使某个节点发生故障,系统仍然可以继续运行,不会影响业务的正常进行。

Y666_788的博客 446

Windows 任务管理器中的虚拟内存、工作设置内存、内存专用工作集、提交大小详解

windows任务管理器中的工作设置内存、内存专用工作集、提交大小详解

dvlinker的技术专栏 2万+

SAP ABAP VL09 BAPI VL 216

ls_batch_item-fact_unit_denom = ls_lips_split-umvkn. "销售数量转换为 SKU 的值(分母)ls_batch_item-fact_unit_nom = ls_lips_split-umvkz. "销售数量转换成SKU的分子(因子)ls_batch_item-sales_unit_iso = ls_lips_split-meins. "被拆分DN基本单位。

ChampaignWolf的专栏 2300

Windows 内存详解(二) windows任务管理器中的工作设置内存,内存专用工作集,提交大小详解

首 页 » 软件使用 » windows任务管理器中的工作设置内存,内存专用工作集,提交大小详解 windows任务管理器中的工作设置内存,内存专用工作集,提交大小详解 虽然是中文字,但是理解起来还是很困难,什么叫工作设置内存,什么叫内存专用工作集,什么叫提交大小,区别是什么,让人看了一头雾水. 通俗的讲工作设置内存是程序占用的物理内存(包含与其他程序共享的一

数据轨迹的专栏 4187

使用AI编写测试用例——详细教程

现阶段AI还不能完全替代人工测试用例编写,但如果把AI当做一个提高效率的工具,它将会是一个很强大的辅助。

公众号|软件测试老吴 3万+

内存工作设置(工作集)、提交大小概念简述

Windows7的任务管理器(以中文版为例)里面"进程"Tab页的列里面跟内存相关的展示项有7项(分页池和非页面缓冲池跟内核内存有关,暂不讨论),做软件工程师多年,大家真的懂任务管理器中这些内存相关的列吗?譬如什么工作集,专用工作集等等,另外像其它的一些常用工具,譬如ProcessExplorer里面可能又是叫Working Set,Private Bytes等等

magictong的专栏 4万+

手把手教你用CMake和MinGW64编译libuvc:静态链接与动态链接的选择

本文详细指导如何在Windows平台上使用CMake和MinGW64编译libuvc库,并深入探讨静态链接与动态链接的选择策略。通过对比两种链接方式在部署复杂度、内存占用和版本管理等方面的差异,帮助开发者根据项目需求做出最优决策,实现高效的USB摄像头开发。

weixin_29171087的博客 255

Flink CDC 1.18.1 Oracle 数据同步到postgresql

8、修改Flink的配置文件,主要是各种服务的绑定地址,默认为localhost,统统改为0.0.0.0,如:rest.address: 0.0.0.0 #localhost。将flink-sql-connector-oracle-cdc-3.0.1.jar复制到flink-1.18.1/lib目录中。6、下载 flink-connector-jdbc-3.1.1-1.17.jar,postgresql-42.7.3.jar。7、安装postgresql就不说了,相信你已经有了数据库了。

ynzhangyao的专栏 1800

windows任务管理器中的工作设置内存,内存专用工作集,提交大小详解

windows任务管理器中的工作设置内存,内存专用工作集,提交大小详解 虽然是中文字,但是理解起来还是很困难,什么叫工作设置内存,什么叫内存专用工作集,什么叫提交大小,区别是什么,让人看了一头雾水. 通俗的讲工作设置内存是程序占用的物理内存(包含与其他程序共享的一部分),内存专用工作集是程序独占的物理内存,提交大小是程序独占的内存(包含物理内存和在页面文件中的内存). 注:页面文件就是存放不在物理内存中的内存,文件路径一般在C:\pagefile.sys,目的是为了能够让更多的进程运行,...

肖邦的夜曲的专栏 8473

【自用】吉林大学计算机系统结构第二章:缓存优化 曲冠南老师版 笔记

容量8KB,2的十三次方,块大小16B,一块用掉四位,剩余2的九次方是标志位,则有512行,每个元素8B,则一块两个元素,a数组150块,b数组152块,不出现容量失效。不管是否交换内容,在同一“伪相联”组中的两块都是用同一个索引得到的,因此失效率相同,即:失效率伪相联=失效率2路。伪相联cache的命中时间等于直接映象cache的命中时间加上伪相联查找过程中的命中时间*该命中所需的额外开销。(6) 由编译器控制的预取,硬件预取的替代方法,在编译时加入预取的指令,在数据被用到之前发出预取请求。

weixin_73587775的博客 1616

观察Windows工作集、提交内存的变化

这100个线程较少递归次数,不让它崩溃,比如递归100次,发现线程结束后,Virtual Size、Private Byte和WS Private都回到了开始的大小,说明线程结束后,这部分内存都回收了。,我并未求证准确的定义,我的理解是进程用到的所有内容的虚拟地址总的大小,它是最大的一个,应该包括驻留在内存中的页面以及交换到磁盘中的页面文件以及保留的地址。2.即使提交的内存,如果不访问,内存管理器也不会主动去为这块内存创建实际的物理页,而是会延迟到第一次访问的时候。进程中驻留在物理内存中的大小。

weixin_44029667的博客 1430

Clang Static Analyzer 使用教程:本地 + CMake + GitHub Actions 自动静态分析实战

本文介绍了ClangStaticAnalyzer静态代码分析工具的使用方法。该工具基于Clang/LLVM,可检测C/C++代码中的内存泄漏、空指针等常见错误。主要内容包括:安装指南(Ubuntu/macOS/Windows)、命令行使用方法、CMake项目集成方案、GitHub Actions自动化分析配置,以及HTML报告生成与查看。文章还提供了官方资源链接,帮助开发者系统掌握从本地调试到持续集成的完整静态分析工作流,提升代码质量保障能力。适用于需要在开发过程中实施静态分析的C/C++项目。

u014358031的博客 2159

105. replace( )函数

【目录】

weixin_63986098的博客 1万+

任务管理器内存三兄弟:工作集、专用工作集与提交大小

在 Windows 性能排查中,进程内存从来不是一个单一数字。工作集表示此刻驻留物理内存的页面,专用工作集只统计进程独占的物理页,提交大小则代表已向系统承诺的虚拟内存,可能包含尚未真正写入或被换出的部分。理解三者的计算差异,能避免把正常缓存当成内存泄漏,也能发现“工作集不涨、提交持续上涨”这类隐蔽问题。对设备上位机、服务端、数据库等长时间运行程序,结合句柄、线程、页面文件、硬错误和采样工具观察提交斜率,比只看任务管理器“内存”列更可靠。围绕工作集、专用工作集与提交大小的组合形态、采集方法和容量估算,可以更系

weixin_42529366的博客 342

保姆级教程:用Ubuntu 22.04搭建RustDesk中继服务器(含Cloudflare避坑指南)

本教程详细指导如何在Ubuntu 22.04上搭建RustDesk中继服务器,解决跨国远程协作的延迟问题。涵盖环境配置、Rust编译优化、服务部署及Cloudflare代理设置等关键步骤,帮助用户实现高性能的私有中继服务。

weixin_29002209的博客 527

Windows 任务管理器中的几个内存概念

转:https://www.cnblogs.com/walfud/articles/3256233.html Windows 任务管理器中的几个内存概念 我们使用的大部分 PC 是基于 Intel 微处理器的 x86 和 x64 架构计算机.  因此, 我们面对的 windows 避免不了和 Intel 架构有些设计上的契合. 比如接下来要说到的内存管理. 为简单起见, 我们只讨论 x86 ...

huanongying131的博客 4456

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Windows内存 之 任务管理器

任务管理器中的内存概念: 工作集(内存): 进程所占用的总物理内存. 但是这个值是由两部分组成, 即'专用工作集'+'共享工作集'. 所以如图,工作集内存 =内存(专用工作集) +内存(共享工作集) 内存(专用工作集)是程序独占的物理内存 内存(共享工作集)是程序与其它进程共享的内存,比如加载一个dll所占用的内存 提交大小是程序独占的内存(包含物理内存和在页面文件中...

icebergliu1234的博客 5010

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

上一篇: excel 无法编辑单元格,忘记保护密码,怎么撤销保护密码
下一篇: windows下如何查看某个进程有多少个线程,及各个线程的CPU、名称等详细信息
EchoCoder
博客等级 码龄16年 25粉丝 50原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值