.net - 如果某些进程需要分配超过 2 GB 的内存,会发生什么情况?

标签 .net windows memory-management internal

据我所知 - Windows 中的任何进程都会获得 2 GB 的虚拟内存地址空间(在某些情况下为 3 GB)用于分配用途。

  1. 在什么情况下进程将获得 3 GB 而不是 2 GB? 应用程序开发人员是否可以通过某种方式“要求”操作系统分配超过 2/3 GB 的虚拟地址空间?

  2. 如果进程需要超过 3/2 GB 会怎样? (我猜系统会遇到一些“内存不足异常”——但有什么方法可以避免这种情况吗?)

例如 - 如果进程是“Microsoft SQL Server”,需要分配比 2/3 GB 多得多的内存,会发生什么

最佳答案

一个 32 位进程有 4 GB 地址空间,其中通常为硬件保留 1 GB,为 Windows 保留 1 GB。使用 switch in boot.ini您可以让 Windows 为进程提供 3 GB 的地址空间。

一个 64 位进程有 16 PB 地址空间。我不知道其中有多少是保留的,但可用地址空间比 2 或 3 GB 大得多。

关于.net - 如果某些进程需要分配超过 2 GB 的内存,会发生什么情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11201838/

相关文章:

ruby - 简单的 Ruby 编辑器?

javascript - PhoneGap 内存管理

c++ - 如何确定 cv::Mat 使用的是内部数据还是外部数据?

c# - 无法从程序集 `A` 加载类型 `Not.Containing.Type.A`

.net - 在不添加命名空间保留的情况下使用 System.Net.HttpListener 需要什么权限?

Windows 批处理 : combining start and FOR/f "tokens=1" with | escape coded symbols

memory-management - AIX 中的中断环境可以调用哪些内存分配函数?

c# - 为什么使用 Google Cloud Firestore 1.0.0-beta05 C# SetAsync 时会出现 Grpc.Core.RpcException StatusCode=Unavailable, Detail ="Connect Failed"?

c# - 为 Thread.Sleep(TimeSpan) 设置高值

CreateWindow失败,错误50(不支持该请求。)