PowerShell - 如何从 PowerShell 获取我的 exe 程序的内存消耗峰值
PowerShell - how can I get memory consumption peak for my exe program from PowerShell
我有一个分配内存的程序。
我正在 运行 从 Windows PowerShell 命令行对其进行设置。它可以运行 1-2小时分配和释放内存块。
我正在寻找的是一种在最后(当程序完成时)获得一些内存消耗统计信息的方法。
更具体地说,内存的峰值使用量是多少(分配的最大内存)。
Get-Process -Id xxx
为您提供 ID 为 xxx 的进程的 Process
object 实例。那里有各种与内存相关的属性,包括 PeakVirtualMemorySize64
和 PeakWorkingSet64
之类的东西。选择您认为有用的。
您甚至可以设置后台作业来获取数据系列,例如
$proc = Start-Process "your_long_running.exe" -PassThru
$memoryWatcher = Start-Job -ScriptBlock {
while ($true) {
Get-Process -Id $args[0] | Select VirtualMemorySize64,PeakVirtualMemorySize64
Start-Sleep -Seconds 1
}
} -ArgumentList $proc.Id
# now wait for the process to end
Wait-Process -Id $proc.Id
$memoryWatcher.StopJob()
$results = Receive-Job $memoryWatcher
$results | Format-Table
我有一个分配内存的程序。 我正在 运行 从 Windows PowerShell 命令行对其进行设置。它可以运行 1-2小时分配和释放内存块。
我正在寻找的是一种在最后(当程序完成时)获得一些内存消耗统计信息的方法。 更具体地说,内存的峰值使用量是多少(分配的最大内存)。
Get-Process -Id xxx
为您提供 ID 为 xxx 的进程的 Process
object 实例。那里有各种与内存相关的属性,包括 PeakVirtualMemorySize64
和 PeakWorkingSet64
之类的东西。选择您认为有用的。
您甚至可以设置后台作业来获取数据系列,例如
$proc = Start-Process "your_long_running.exe" -PassThru
$memoryWatcher = Start-Job -ScriptBlock {
while ($true) {
Get-Process -Id $args[0] | Select VirtualMemorySize64,PeakVirtualMemorySize64
Start-Sleep -Seconds 1
}
} -ArgumentList $proc.Id
# now wait for the process to end
Wait-Process -Id $proc.Id
$memoryWatcher.StopJob()
$results = Receive-Job $memoryWatcher
$results | Format-Table