gpt4 book ai didi

c++ - 为什么在4GB的虚拟内存空间上只能分配2GB?

转载 作者:太空宇宙 更新时间:2023-11-03 10:39:42 31 4
gpt4 key购买 nike

我的教授说,通常情况下,我们只能使用 4 GB RAM 中的大约 2 GB,因为操作系统使用了另外 2 GB。然而,在运行一些测试时,我看到一个进程有 4 GB 的虚拟内存空间,我只能使用 VirtualAlloc() 函数分配最多不到 2 GB 的空间。为什么会这样(我预计它会超过 3 GB)?

据我所知,堆栈、数据和代码段只使用少量内存。我的一位 friend 告诉我,其他 2 GB 就像教授说的那样被操作系统使用。但是,我认为教授的意思是 2 GB 的物理内存。它不在这个进程的虚拟内存中。谁能解释这里发生了什么?谢谢。

一些信息:

物理内存:4GB。

虚拟内存:4GB。

操作系统:Windows 10。

最佳答案

您的教授是正确的 - 您的 虚拟 内存中有 2 GB 是内核内存。这样,当发生上下文切换时,这 2 GB 可以保留,只有其他 2 GB 需要交换。它有助于提高性能。

您还可以看到here Microsoft 的解释,包括如何将用户部分增加到 3 GB 的解释。

顺便说一下,在 64 位机器上情况不同,虚拟内存要大得多。

关于c++ - 为什么在4GB的虚拟内存空间上只能分配2GB?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45397722/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com