本稿では各種メモリ情報をコマンドで取得する方法を説明しています。コマンドはPowerShellで実行してください。
※参考:「PowerShell」の開き方
それぞれのメモリ情報が何を示すかについては下記の記事で解説しています。
※参考: Windows のメモリを理解する
1. Win32_OperatingSystem
サンプル
#メモリ情報を取得して変数($MemInfo1) に格納
$MemInfo1=Get-WmiObject Win32_OperatingSystem
#合計物理メモリ (Total Physical Memory)
Write-Output "Total Physical Memory (MB): $( [Math]::Round($($MemInfo1.TotalVisibleMemorySize / 1024)))"
#利用可能な物理メモリ (Available Physical Memory)
Write-Output "Available Physical Memory (MB): $( [Math]::Round($($MemInfo1.FreePhysicalMemory / 1024)))"
#合計仮想メモリ (Total Virtual Memory)
Write-Output "Total Virtual Memory (MB): $( [Math]::Round($($MemInfo1.TotalVirtualMemorySize / 1024)))"
#利用可能な仮想メモリ (Available Virutal Memory)
Write-Output "Available Virutal Memory (MB): $( [Math]::Round($($MemInfo1.FreeVirtualMemory / 1024)))"
#ページファイルの空き容量 (Page File Space) ※割り当てられているページファイルのサイズ
Write-Output "Page File Space (KB): $( [Math]::Round($($MemInfo1.SizeStoredInPagingFiles / 1024)))"
# 利用可能なページファイルの容量 (Available Page File Space)
Write-Output "Available Page File Space (MB): $( [Math]::Round($($MemInfo1.FreeSpaceInPagingFiles / 1024)))"
実行例
#メモリ情報を取得して変数($MemInfo1) に格納
$MemInfo1=Get-WmiObject Win32_OperatingSystem
#合計物理メモリ (Total Physical Memory)
PS> Write-Output "Total Physical Memory (MB): $( [Math]::Round($($MemInfo1.TotalVisibleMemorySize / 1024)))"
Total Physical Memory (MB): 16055
#利用可能な物理メモリ (Available Physical Memory)
PS> Write-Output "Available Physical Memory (MB): $( [Math]::Round($($MemInfo1.FreePhysicalMemory / 1024)))"
Available Physical Memory (MB): 8999
#合計仮想メモリ (Total Virtual Memory)
PS> Write-Output "Total Virtual Memory (MB): $( [Math]::Round($($MemInfo1.TotalVirtualMemorySize / 1024)))"
Total Virtual Memory (MB): 24188
#利用可能な仮想メモリ (Available Virutal Memory)
PS> Write-Output "Available Virutal Memory (MB): $( [Math]::Round($($MemInfo1.FreeVirtualMemory / 1024)))"
Available Virutal Memory (MB): 13002
#ページファイルの空き容量 (Page File Space) ※割り当てられているページファイルのサイズ
PS> Write-Output "Page File Space (KB): $( [Math]::Round($($MemInfo1.SizeStoredInPagingFiles / 1024)))"
Page File Space (KB): 8133
# 利用可能なページファイルの容量 (Available Page File Space)
PS> Write-Output "Available Page File Space (MB): $( [Math]::Round($($MemInfo1.FreeSpaceInPagingFiles / 1024)))"
Available Page File Space (MB): 7545
上記で確認したメモリ情報はシステム情報で確認できる情報と一致しています。利用可能なページファイルの容量などコマンドでのみ確認できる情報もあります。
2. Win32_PageFileUsage
サンプル
#メモリ情報を取得して変数($MemInfo2) に格納
$MemInfo2 = Get-WmiObject -Query "Select AllocatedBaseSize,CurrentUsage from Win32_PageFileUsage"
#ページファイルの空き容量 (Page File Space) ※割り当てられているページファイルのサイズ
Write-Output "Paging File Size(MB): $($MemInfo2.AllocatedBaseSize)"
# ページファイルの使用量 (Available Page File Space)
Write-Output "Paging File Usage(MB): $($MemInfo2.CurrentUsage)"
実行例
#メモリ情報を取得して変数($MemInfo2) に格納
PS> $MemInfo2 = Get-WmiObject -Query "Select AllocatedBaseSize,CurrentUsage from Win32_PageFileUsage"
#ページファイルの空き容量 (Page File Space) ※割り当てられているページファイルのサイズ
PS> Write-Output "Paging File Size(MB): $($MemInfo2.AllocatedBaseSize)"
Paging File Size(MB): 8133
# ページファイルの使用量 (Available Page File Space)
PS> Write-Output "Paging File Usage(MB): $($MemInfo2.CurrentUsage)"
Paging File Usage(MB): 588
3. Win32_PerfFormattedData_PerfOS_Memory
サンプル
#メモリ情報を取得して変数($MemInfo3) に格納
$MemInfo3 = Get-WmiObject Win32_PerfFormattedData_PerfOS_Memory
# ページプール (Paged Pool)
Write-Output "Paged Pool Usage (MB): $( [Math]::Round($($MemInfo3.PoolPagedBytes / 1024 /1024)))"
# 非ページプール (Non-Paged Pool)
Write-Output "Non Paged Pool Usage (MB): $( [Math]::Round($($MemInfo3.PoolNonPagedBytes / 1024 /1024)))"
実行例
#メモリ情報を取得して変数($MemInfo3) に格納
PS> $MemInfo3 = Get-WmiObject Win32_PerfFormattedData_PerfOS_Memory
# ページプール (Paged Pool)
PS> Write-Output "Paged Pool Usage (MB): $( [Math]::Round($($MemInfo3.PoolPagedBytes / 1024 /1024)))"
Paged Pool Usage (MB): 648
# 非ページプール (Non-Paged Pool)
PS> Write-Output "Non Paged Pool Usage (MB): $( [Math]::Round($($MemInfo3.PoolNonPagedBytes / 1024 /1024)))"
Non Paged Pool Usage (MB): 430
コマンドで確認した情報はタスクマネージャで確認できます。
※画面をキャプチャとコマンド実行のタイミングの問題で少々値が異なっています。
以上。
メモリの動作の理解やボトルネック解析については下記の本がおすすめです。
コメント