大家的虚拟内存占用都这么大的嘛?😂
1
1419co1in 2021-12-07 17:14:07 +08:00
|
2
deplivesb 2021-12-07 17:15:24 +08:00
这个东西看看就好,而且貌似 VM 被压缩才是谁用的虚拟内存,这个是啥我也不知道
我这还有个更大的 ![活动监视器-kernel_task _0_-20211207171414.png]( https://s2.loli.net/2021/12/07/kDtErN7SUMOpPB3.png) |
3
EthanLau 2021-12-07 17:23:05 +08:00
刚看了下, 确实很大
https://sm.ms/image/9cTDKglkFZLoYHA |
4
kidonng 2021-12-07 17:45:47 +08:00 via Android
Unix 上的“虚拟内存”不是你以为的那个虚拟内存,后者一般叫“交换空间”( Swap )。这个“虚拟内存”是程序声明自己要多少系统就给多少的,但程序可以不实际使用。
|
5
f64by 2021-12-07 18:19:24 +08:00
我记得虚拟内存大小=程序分配的内存最高地址-最低地址吧,这个数值没有什么实际意义
我刚看了下,我系统里哪个进程的这个值都不低于 390G |
6
12101111 2021-12-07 19:59:44 +08:00
虚拟内存是指的带 MMU 的系统用户态所获取的虚拟地址空间的大小,在使用 overcommit 之后,如果程序获得了一页内存,但从来没有访问过,那么这页内存不会真正的创建出来的,只有缺页中断发生后,这页内存才会真正映射到物理内存里。
另一方面,swap 才是将已经映射到物理内存的匿名页移动到硬盘上,然后取消该匿名页的映射。 |
7
wangyu17455 2021-12-08 03:38:13 +08:00
这个就相当于 linux 的 top 里的 virt ,new int[100]会导致 virt 变大 100*sizeof(int),但是不真占内存,赋值之后才占内存
|
8
LewisHorse 2021-12-08 03:56:15 +08:00
Monterey 内存问题很严重好像,不止 vscode 我打 FaceTime 能占 20G 直接卡死
|
9
Kininaru 2021-12-08 17:33:11 +08:00
前几天刚看完《现代操作系统》的内存管理,我理解这个是地址空间,程序能在这个空间内寻址,系统包分配。即使程序不申请,虚拟内存还是会有那么大。以前用 macOS 的时候,所有程序的虚拟内存都是 4G 起步,哪怕只用了几 k...
拿硬盘当内存的那技术应该是叫“交换分区”。我电脑关掉了交换分区,还是有虚拟内存,并且和物理内存一样大。 |
10
Kininaru 2021-12-08 17:36:02 +08:00
#9 虚拟内存,程序能合法地申请这么多内存,能合法地在这里面寻址,系统包分配,不代表程序已经申请了这么多。
|