【问题标题】:Possible to set a maximum of memory consumption on a powershell script in % or megabyte?可以在 % 或兆字节的 powershell 脚本上设置最大内存消耗吗?
【发布时间】:2014-03-18 15:38:24
【问题描述】:

有时我的脚本会占用所有内存。由于我不想一直监视它们或手动将 cpu 优先级设置为低,我想知道是否有一个选项可以为该特定脚本提供一个内存值(可能以 mb 为单位)。 这个选项存在吗?

【问题讨论】:

  • 当它达到限制时你希望发生什么。它达到限制的原因是脚本需要将信息存储在内存中以执行您编写的操作。您是否希望它简单地停在极限处。这是一些外部进程可以做的唯一事情。如果您希望它在使用内存的方式上更加智能,您必须将该逻辑写入脚本中。
  • 我想也许有办法从内存交换到硬盘或其他什么?
  • 当物理内存用完时,操作系统会自动使用页面文件。试图超越操作系统的内存管理器对你来说不会有好结果。
  • 我建议您查看您在脚本中尝试执行的操作,并找到一种方法,以便一开始就不要在内存中保存太多(即过滤搜索结果)或编写您的脚本它将信息存储在文件中,然后处理离散的数据块。
  • 好的,我的问题是我有 13.300 个文件夹,每个文件夹中有大约 20 个 zip 文件。我需要删除其中没有 .txt 文件的 zip 文件,并保留每个文件夹的最新修改的 2 个文件。任何想法如何管理:)?

标签: powershell memory-management scripting out-of-memory powershell-3.0


【解决方案1】:

PowerShell 不提供任何内置方法来控制脚本使用的内存等系统资源。

Windows 确实提供了一种将系统资源限制为进程组的方法,您可以在此处了解更多信息:http://msdn.microsoft.com/en-us/library/windows/desktop/ms684161(v=vs.85).aspx

如果您的脚本消耗过多内存,我建议调查内存泄漏。有许多工具可以帮助跟踪内存泄漏。有些是低级别的(例如,在 windbg 中使用来自 SOS 的 !dumpheap - http://msdn.microsoft.com/en-us/library/bb190764(v=vs.110).aspx)。其他人非常聪明,可以让您拍摄多个快照并仅向您显示快照之间新分配的对象。您可以搜索“.Net memory profiler”以了解可用的内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-28
    • 1970-01-01
    • 2019-10-10
    相关资源
    最近更新 更多