我有一個(長時間運行)的腳本,我嘗試執行。不幸的是,當它運行時,PowerShell的內存使用量開始增加。該腳本相對簡單,我看不到任何明顯的內存泄漏。但是,我使用的API可能表現不佳。獲取Powershell中對象的內存大小
有沒有一種簡單的方法從powershell中獲取對象的內存大小,所以我可以看到我的懷疑是否正確?
我有一個(長時間運行)的腳本,我嘗試執行。不幸的是,當它運行時,PowerShell的內存使用量開始增加。該腳本相對簡單,我看不到任何明顯的內存泄漏。但是,我使用的API可能表現不佳。獲取Powershell中對象的內存大小
有沒有一種簡單的方法從powershell中獲取對象的內存大小,所以我可以看到我的懷疑是否正確?
也許做一個粗暴的方式是這樣的:
$memBefore = (Get-Process -id $pid).WS
# Create object here...
$memAfter = (Get-Process -id $pid).WS
($memAfter - $memBefore)/1KB
如果你也許能減輕它的內存泄漏:
[gc]::Collect()
管理一起破解一些東西......原來API確實有內存泄漏,但一旦找到罪魁禍首,我就可以解決它。謝謝! – dckrooney
我認爲[gc] :: Collect()是與Powershell一起工作時的天賜之物.. Andy,你介意我是否問這是第三方COM對象,還是Windows OS/.NET的一部分? –
@indifferentDrum'[gc]'是一種內置類型。我不得不用它來解決處理打開文件的[第三方庫問題](http://dotnetzip.codeplex.com/workitem/12727)。 –
另約方式:
$before = [gc]::GetTotalMemory($true)
$s = "A new string object"
$after = [gc]::GetTotalMemory($true)
($after - $before)/1kb # return the delta in KBytes
你使用的是什麼樣的API? –