2

私の知る限り、Windowsのプロセスは、割り当て用に2 GBの仮想メモリアドレス空間(場合によっては3 GB)を取得します。

  1. プロセスが 2 GB ではなく 3 GB を取得するのはどのような場合ですか? アプリケーション開発者が OS に 2/3 GB 以上の仮想アドレス空間を割り当てるよう「要求」する方法はありますか?

  2. プロセスが 3/2 GB 以上を必要とする場合はどうなりますか? (システムは「メモリ不足の例外」を経験すると思いますが、このケースを回避する方法はありますか?)

たとえば、プロセスが「Microsoft SQL Server」であり、2/3 GB をはるかに超える割り当てが必要な場合はどうなりますか

4

2 に答える 2

2

32ビットプロセスには4GBのアドレス空間があり、通常は1 GBがハードウェア用に予約され、1GBがWindows用に予約されています。boot.iniのスイッチを使用すると、Windowsに3GBのアドレス空間をプロセスに与えることができます。

64ビットプロセスには16PBのアドレス空間があります。そのどれだけが予約されているかはわかりませんが、使用可能なアドレス空間は2GBまたは3GBよりかなり大きくなっています。

于 2012-06-26T06:43:52.077 に答える
2

私の知る限り、Windowsのプロセスは、割り当て用に2 GBの仮想メモリアドレス空間(場合によっては3 GB)を取得します。

いいえ、x64 では仮想メモリ空​​間がはるかに大きいため、SQL Server などのツールは通常 x64 で最適に動作します。

現在の .NET では、個々のオブジェクト(文字列、配列など) に 2GB までの制限がありますが、これは間もなくなくなるようです (大規模なオブジェクトを許可します)。gcAllowVeryLargeObjectsを参照してください

于 2012-06-26T06:34:20.230 に答える