Virtual Bytes が、Windows 10 April 2018 Update 適用前後で異なる

こんにちは、Platform SDK (Windows SDK) サポートチームです。Windows 10 April 2018 Update (1803) 適用後、 64 ビットプロセスの Virtual Bytes が以前の OS で返されていた値と比較して大きく異なるようになりました。今回はその件に関してご案内します。

現象

Virtual Bytes はプロセスが使用している仮想アドレス空間の現在のサイズを表していますが、2018 年 4 月 30 日に公開された Windows 10 April 2018 Update (1803) 適用後の環境において、64 ビットプロセスの  Virtual Bytes が大きく異なるようになりました。

原因

Windows 10 April 2018 Update (1803) 適用後の新しいメモリマネージャーにおいて、メタデータ用に予約される仮想メモリのサイズが変更されました。具体的には、64 ビットプロセスにおいて 4 GB 、 32 ビットプロセスにおいては 36 KB が予め確保されます。 Virtual Bytes は、現在コミットされている仮想メモリのサイズだけではなく、予約されている仮想メモリのサイズも含みます。新しいメモリマネージャーにおいて予約される仮想メモリのサイズが変更になった結果、 Virtual Bytes の値も Windows 10 April 2018 Update (1803) を適用する前と後で異なります。

対処策

64 ビットプロセスのメモリ利用状況の指標としては、コミットされている仮想メモリのサイズだけではなく、予約されている仮想メモリのサイズも含む Virtual Bytes の値は適切ではございません。一方で、 Private Bytes はプロセスによって割り当て済みのメモリのサイズを反映するため、プロセスのメモリ利用状況を監視するという用途においてはこちらの値を使用することをご検討ください。

参考情報

.NET Framework の Process.VirtualMemorySize64 プロパティは Virtual Bytes の値が取得されます。こちらのプロパティを利用してプロセスの仮想メモリを確認している場合も同じ現象が発生します。対処策として、 Process.PrivateMemorySize64 プロパティをご利用ください。