コンピュータの物理メモリの合計サイズ、使用可能な物理メモリのサイズ、さらに、仮想メモリの合計サイズ、使用可能な仮想メモリのサイズを取得する方法を紹介します。
以下の例ではWMIを使って取得しています。
WMIはWindows2000以上のOSで使用できます。(それ以外のOSでもインストールすれば使用できます。こちらからダウンロードできるようです。)
下の例ではSystem.Management.dllを参照設定に追加する必要があります。
Dim mc As New System.Management.ManagementClass("Win32_OperatingSystem") Dim moc As System.Management.ManagementObjectCollection = mc.GetInstances() Dim mo As System.Management.ManagementObject For Each mo In moc '合計物理メモリ Console.WriteLine("合計物理メモリ:{0}KB", mo("TotalVisibleMemorySize")) '利用可能な物理メモリ Console.WriteLine("利用可能物理メモリ:{0}KB", mo("FreePhysicalMemory")) '合計仮想メモリ Console.WriteLine("合計仮想メモリ:{0}KB", mo("TotalVirtualMemorySize")) '利用可能な仮想メモリ Console.WriteLine("利用可能仮想メモリ:{0}KB", mo("FreeVirtualMemory")) '他のページをスワップアウトせずにページングファイルにマップできるサイズ Console.WriteLine("FreeSpaceInPagingFiles:{0}KB", mo("FreeSpaceInPagingFiles")) 'ページングファイルに保存できる合計サイズ Console.WriteLine("SizeStoredInPagingFiles:{0}KB", mo("SizeStoredInPagingFiles")) 'スワップスペースの合計サイズ 'スワップスペースとページングファイルが区別されていなければ、NULL Console.WriteLine("TotalSwapSpaceSize:{0}KB", mo("TotalSwapSpaceSize")) mo.Dispose() Next mo moc.Dispose() mc.Dispose()
System.Management.ManagementClass mc = new System.Management.ManagementClass("Win32_OperatingSystem"); System.Management.ManagementObjectCollection moc = mc.GetInstances(); foreach (System.Management.ManagementObject mo in moc) { //合計物理メモリ Console.WriteLine("合計物理メモリ:{0}KB", mo["TotalVisibleMemorySize"]); //利用可能な物理メモリ Console.WriteLine("利用可能物理メモリ:{0}KB", mo["FreePhysicalMemory"]); //合計仮想メモリ Console.WriteLine("合計仮想メモリ:{0}KB", mo["TotalVirtualMemorySize"]); //利用可能な仮想メモリ Console.WriteLine("利用可能仮想メモリ:{0}KB", mo["FreeVirtualMemory"]); //他のページをスワップアウトせずにページングファイルにマップできるサイズ Console.WriteLine("FreeSpaceInPagingFiles:{0}KB", mo["FreeSpaceInPagingFiles"]); //ページングファイルに保存できる合計サイズ Console.WriteLine("SizeStoredInPagingFiles:{0}KB", mo["SizeStoredInPagingFiles"]); //スワップスペースの合計サイズ //スワップスペースとページングファイルが区別されていなければ、NULL Console.WriteLine("TotalSwapSpaceSize:{0}KB", mo["TotalSwapSpaceSize"]); mo.Dispose(); } moc.Dispose(); mc.Dispose();
注意:Windows 2000やWindows Server 2003では、上記の方法で正しく値を取得できない場合があります。詳しくは、「Some memory-related results that are returned from the Win32_OperatingSystem WMI class are incorrect in Windows 2000 and in Windows Server 2003」にあります。
.NET Framework 2.0以降のVB.NETでは、My.Computer.Infoのプロパティを使って取得することができます。My.Computer.Infoはバイト単位の値を返します。
'合計物理メモリ Console.WriteLine("合計物理メモリ:{0}バイト", My.Computer.Info.TotalPhysicalMemory) '利用可能な物理メモリ Console.WriteLine("利用可能物理メモリ:{0}バイト", My.Computer.Info.AvailablePhysicalMemory) '合計仮想メモリ Console.WriteLine("合計仮想メモリ:{0}バイト", My.Computer.Info.TotalVirtualMemory) '利用可能な仮想メモリ Console.WriteLine("利用可能仮想メモリ:{0}バイト", My.Computer.Info.AvailableVirtualMemory)
//参照にMicrosoft.VisualBasic.dllを追加する必要がある Microsoft.VisualBasic.Devices.ComputerInfo info = new Microsoft.VisualBasic.Devices.ComputerInfo(); //合計物理メモリ Console.WriteLine("合計物理メモリ:{0}バイト",info.TotalPhysicalMemory); //利用可能な物理メモリ Console.WriteLine("利用可能物理メモリ:{0}バイト", info.AvailablePhysicalMemory); //合計仮想メモリ Console.WriteLine("合計仮想メモリ:{0}バイト", info.TotalVirtualMemory); //利用可能な仮想メモリ Console.WriteLine("利用可能仮想メモリ:{0}バイト", info.AvailableVirtualMemory);