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 实例。那里有各种与内存相关的属性,包括 PeakVirtualMemorySize64PeakWorkingSet64 之类的东西。选择您认为有用的。

您甚至可以设置后台作业来获取数据系列,例如

$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