首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >无法在PowerShell 3.0和2.0中释放内存

无法在PowerShell 3.0和2.0中释放内存
EN

Stack Overflow用户
提问于 2014-04-15 09:50:10
回答 1查看 101关注 0票数 1

不久前,我用C#编写了一个简单的完整TCP connect扫描器,并将其编译成动态链接库。它将PSObjects输出到管道以显示扫描结果。如果我正在扫描CIDR /16子网,根据任务管理器,我得到的数据量很好地进入了512MiB。一旦我分析完结果,我想找到一种方法来释放内存使用,以便为其他任务释放空间(我们必须使用少于8 GiB的内存...)。问题是我不能让PowerShell释放它对这个内存的占用。有谁知道释放这种内存消耗的好方法吗?

我尝试将变量设置为$null,删除变量,并调用GC::Collect(),但任务管理器中的内存使用量仍然保持在相同(或更高)的水平。我对这个看似简单的任务束手无策。也许内存被释放了,但任务管理器只报告之前的分配?

EN

回答 1

Stack Overflow用户

发布于 2014-04-15 10:05:38

托管内存的唯一释放将由CLR垃圾回收器完成。既然您已经尝试过GC收集,我会说您有一个托管的内存储备。也就是说,您还没有找到引用您的对象的所有根。我建议您使用诸如RedGate的内存分析器或免费的ClrProfiler之类的工具来确定哪些对象仍在引用您创建的对象。我相信即使是Visual Studio 2013也能够从转储文件中分析托管内存。这也可以帮助您找到包含对数据对象的引用的所有对象。顺便说一句,你的对象有没有包装本机资源(句柄,内存等)?

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23073339

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档