大家的虚拟内存占用都这么大的嘛?
![]() | 1 1419co1in 2021-12-07 17:14:07 +08:00 |
2 deplivesb 2021-12-07 17:15:24 +08:00 这个东西看看就好,而且貌似 VM 被压缩才是谁用的虚拟内存,这个是啥我也不知道 我这还有个更大的  |
![]() | 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 |
![]() | &nbs; 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 虚拟内存,程序能合法地申请这么多内存,能合法地在这里面寻址,系统包分配,不代表程序已经申请了这么多。 |