Powershell无法释放内存

5
当在Windows XP (Powershell 1.0)中从 Powershell或Batch:查找和替换字符 运行此脚本时,一切都很顺利。但是在脚本停止处理文本文件后,Powershell仍然保留着超过1,000,000 kb的内存(从任务管理器中检查),并且似乎不释放内存使用情况。我必须杀死Powershell进程才能释放内存。如何防止出现这种巨大的内存使用情况?

1
顺便说一句:除非你绝对必须就地编辑文件,否则不应该在Get-Content周围使用() -- 这会导致所有行在替换之前被收集起来,对于大文件来说这将是非常昂贵的。 - Jaykul
谢谢,那产生了巨大的影响! - jjoras
2个回答

12

尝试一下

 [GC]::Collect()

这将强制进行垃圾收集。


没有帮助 - 在完成脚本之后,PowerShell ISE仍然占用近4GB的内存,处于空闲状态! - van_folmert

2

看起来 Get-Content 存在内存泄漏问题。

在我们加载约 6000 个文档时,[GC]::Collect 在我们的情况下不起作用,我们不得不使用 StreamReader:

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

...

$sr.Dispose()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接