在Powershell中获取对象的内存大小

dck*_*ney 5 powershell memory-leaks

我有一个(长期运行的)脚本,我正在尝试执行.不幸的是,随着它的运行,PowerShell的内存使用率开始上升.脚本相对简单,我看不到任何明显的内存泄漏.但是,我使用的API可能表现不佳.

有没有一种简单的方法可以从powershell中获取对象的内存大小,所以我可以看出我的怀疑是否正确?

And*_*ndi 7

也许粗略的做法是这样的:

$memBefore = (Get-Process -id $pid).WS
# Create object here...
$memAfter = (Get-Process -id $pid).WS
($memAfter - $memBefore) / 1KB
Run Code Online (Sandbox Code Playgroud)

如果是内存泄漏,您可以通过以下方式缓解它:

[gc]::Collect()
Run Code Online (Sandbox Code Playgroud)


CB.*_*CB. 6

另一种方式:

$before = [gc]::GetTotalMemory($true)
$s = "A new string object"
$after = [gc]::GetTotalMemory($true)

($after - $before)/1kb # return the delta in KBytes
Run Code Online (Sandbox Code Playgroud)