找回密码
 加入我们
搜索
      
查看: 1999|回复: 17

[软件] 为啥虚拟内存使用率这么高?要怎么改善

[复制链接]
发表于 2025-9-4 11:05 | 显示全部楼层 |阅读模式
看物理内存使用率和分页文件使用率感觉都还够用,请问这虚拟内存指的是啥呢?注释是物理内存+分页文件,这对不上啊
捕获.JPG
发表于 2025-9-4 11:08 来自手机 | 显示全部楼层
这是16g内存焦虑了?
发表于 2025-9-4 11:10 | 显示全部楼层
现在的虚拟内存就是别管它,物理内存不够就加
发表于 2025-9-4 11:10 | 显示全部楼层
虚拟内存还有使用率的吗,孤陋寡闻了,一般不都是系统分配页面文件大小的吗?
发表于 2025-9-4 11:11 | 显示全部楼层
这里是使用 committed 算的, 即 os 已经承诺分配的内存总量
发表于 2025-9-4 11:43 | 显示全部楼层
本帖最后由 wybb 于 2025-9-4 11:55 编辑

纯技术的东西说起来有点繁琐,可以说大部分非技术专业的人对于虚拟内存理解是错误的

虚拟内存并不是说硬盘的那个“页面文件”,严格的说“虚拟内存”技术指的是操作系统保护模式使用内存的时候,包括地址、分配都不是和物理内存一一对应的,每个进程都有独立的内存空间,简单点以32位程序为例,就算你电脑只有4个G的物理内存,你运行了50个进程,每个进程都认为自己有4g内存可以用(严谨的说是4g空间,自己能用的并没有4G),程序认为能用的内存远远高于你实际的内存,这个技术叫“虚拟内存技术”。

虚拟内存技术中一个是把内存的地址虚拟了,另外一个是把内存的物理存储虚拟了,比如可以用硬盘的页面文件(linux下可以用交换分区)来充当系统总的虚拟内存的一部分。

此外从应用程序来说,程序的虚拟内存申请和内存使用又是两个阶段(当然细化的说申请还分为保留申请和提交申请两个阶段),简单的说“虚拟内存提交”是指的在虚拟内存中实打实的分配了“虚拟内存地址”并进行也页面映射,但是这个映射就算建立了,和物理内存+页面文件 这两个物理介质有没有被使用又是不同的阶段。

简单的理解 ,我总结一下的话
1、你看到系统总虚拟内存的大小就是 物理内存+页面文件/交换分区  的大小
2、提交的大小指的是程序进行了COMMIT方式的内存申请,系统所有程序可以的申请提交大小的总和不能超过总虚拟内存的大小(就算你物理内存实际上还空着很多也没用),不然系统就会出现内存不够的提醒
3、你这种情况一方面我看了一下,物理内存只有16g,但是虚拟内存为什么这么小(估计1-2g的页面文件),你是否限制了页面文件的大小,这明显是不合理的
4、你可以再任务管理器产看到底什么进程提交了这么多内存,你可以打开任务管理器详情的“提交大小”列

你能把我打下来的看完并完全理解其实也是有点费脑的,虚拟内存的相关细节原理其实很复杂,普通用户也就理解个大概所以也不精确

发表于 2025-9-4 12:49 | 显示全部楼层
wybb 发表于 2025-9-4 11:43
纯技术的东西说起来有点繁琐,可以说大部分非技术专业的人对于虚拟内存理解是错误的

虚拟内存并不是说硬盘 ...

感谢解答。

 楼主| 发表于 2025-9-4 12:51 | 显示全部楼层
wybb 发表于 2025-9-4 11:43
纯技术的东西说起来有点繁琐,可以说大部分非技术专业的人对于虚拟内存理解是错误的

虚拟内存并不是说硬盘 ...

多谢指教
发表于 2025-9-4 12:58 | 显示全部楼层
wybb 发表于 2025-9-4 11:43
纯技术的东西说起来有点繁琐,可以说大部分非技术专业的人对于虚拟内存理解是错误的

虚拟内存并不是说硬盘 ...

这个东西很复杂,普通软件开发者很多也只是一知半解,得对操作系统内存管理非常熟悉才搞的清楚;
不过一般人也不需要了解,很多不懂这块的开发者开发出的软件也一样能用,无非是乱申请内存/浪费内存/内存溢出
发表于 2025-9-4 20:45 | 显示全部楼层
wybb 发表于 2025-9-4 11:43
纯技术的东西说起来有点繁琐,可以说大部分非技术专业的人对于虚拟内存理解是错误的

虚拟内存并不是说硬盘 ...

看下来主要作用是防止程序占用更多的内存
发表于 2025-9-4 21:34 | 显示全部楼层
8V1F$WHEWM1($[XL9ZANH%7.png

你一共就给了400兆虚拟内存占用率能不高吗

你要是没设置过,虚拟内存不够会自己加,这个参数对你来说无意义
发表于 2025-9-4 21:43 | 显示全部楼层
16g内存数着不太对,lz估计硬件保留不小,一两个g。核显那可以扣一下
发表于 2025-9-4 21:45 | 显示全部楼层
我都是关闭虚拟内存的,好几年都很正常
发表于 2025-9-4 22:38 | 显示全部楼层
wybb 发表于 2025-9-4 11:43
纯技术的东西说起来有点繁琐,可以说大部分非技术专业的人对于虚拟内存理解是错误的

虚拟内存并不是说硬盘 ...

所以玩游戏到底关不关sysmain和内存预存取+内存压缩?
发表于 2025-9-5 00:17 | 显示全部楼层
天凉丶 发表于 2025-9-4 22:38
所以玩游戏到底关不关sysmain和内存预存取+内存压缩?

不是同样类型的事情,预读的数据相当于备用缓存,不计算在那些虚拟内存中,而是放在空闲的物理内存里
 楼主| 发表于 2025-9-5 09:30 | 显示全部楼层
银月 发表于 2025-9-4 21:34
你一共就给了400兆虚拟内存占用率能不高吗

你要是没设置过,虚拟内存不够会自己加,这个参数对你来说无 ...

对,是系统划的虚拟内存太小的关系,原来插着2*16的内存,系统自动给的是2G多点,拆下来当二奶机换了2*8的内存,核显给2G,但是系统还是给的原来的大小,并且不重启不会自动增加,重启后就解决了,给了22G的分页文件,系统WIN10
发表于 2025-9-5 09:33 | 显示全部楼层
gaoyi124 发表于 2025-9-4 21:45
我都是关闭虚拟内存的,好几年都很正常

物理内存足够大就可以关。
发表于 2025-9-5 10:30 | 显示全部楼层
你的物理内存占用已经75%了,必然就会更多使用虚拟内存,目前你的虚拟内存也是16G,这个一般系统初始就是这样分配的,跟物理内存一样大。如果你的物理内存占用到了80%-90%,系统就会明显开始卡顿了,因为会频繁的使用虚拟内存,频繁的进行内存交换
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

Archiver|手机版|小黑屋|Chiphell ( 沪ICP备12027953号-5 )沪公网备310112100042806 上海市互联网违法与不良信息举报中心

GMT+8, 2025-9-15 03:45 , Processed in 0.010410 second(s), 6 queries , Gzip On, Redis On.

Powered by Discuz! X3.5 Licensed

© 2007-2024 Chiphell.com All rights reserved.

快速回复 返回顶部 返回列表