2010-11-09 145 views
2

在Windows XP(Powershell 1.0)中從Powershell or Batch: find and replace characters運行此腳本時一切順利。但是,在腳本停止處理文本文件後,Powershell仍然保存了超過1 000 000 kb的內存(從taskmanager進行檢查時),並且似乎不釋放內存使用情況。我必須殺死Powershell進程才能釋放內存。如何防止這種巨大的內存使用情況?Powershell不釋放內存

+0

FWIW:你真的不應該使用()的周圍Get-Content除非你必須編輯這個文件 - 它會導致所有的行在被替換之前被收集,這對於大文件來說將非常昂貴 – Jaykul 2010-11-09 17:24:42

+0

謝謝,這有很大的效果! – jjoras 2010-11-09 17:45:17

回答

5

嘗試

[GC]::Collect() 

強制執行垃圾收集

+0

謝謝,作品lika魅力! – jjoras 2010-11-09 17:45:35

0

似乎有在獲取內容內存泄漏。

[GC] ::收集在我們的情況下加載時沒有工作〜6000頁的文檔,我們不得不使用,而不是一個StreamReader:

$sr = New-Object System.IO.StreamReader($filepath) 

... 

$sr.Dispose()