2010-11-09 6 views
2

При запуске этого скрипта от Powershell or Batch: find and replace characters в Windows XP (Powershell 1.0) все идет хорошо. Но после того, как скрипт прекратил обработку текстового файла, Powershell по-прежнему содержит более 1 000 000 кб памяти (при проверке с помощью диспетчера задач), и, похоже, он не освобождает использование памяти. Мне нужно будет убить процесс Powershell, чтобы освободить память. Как предотвратить это огромное использование памяти?Powershell не освобождает память

+0

FWIW: Вы действительно не должны использовать() вокруг Get-Content, если вам абсолютно не нужно редактировать файл на месте - он заставляет все строки собираться перед заменой, что будет очень дорого с большими файлами. – Jaykul

+0

Спасибо, это имело огромный эффект! – jjoras

ответ

5

Попробуйте

[GC]::Collect() 

Это навязывает сбор мусора

+0

Спасибо, работает lika очарование! – jjoras

0

Кажется, что есть утечка памяти в Get-Content.

[GC] :: Сбор не работает в нашем случае при загрузке ~ 6000 документов, и мы должны были использовать StreamReader вместо:

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

... 

$sr.Dispose() 
Смежные вопросы