用户在非常大的表格(超过 500mb)上使用 Excel 进行计算,即使有 16GB 的 RAM,Excel(64 位)也会占用所有现有内存,我看到它使用了超过 11GB 的系统内存。
有没有办法将其限制在合理大小(比如 8GB)以便系统不会陷入停滞并通过页面文件切换来在 Chrome 中打开新标签?
答案1
我理解这里的问题是找到一种方法来限制进程使用的内存,而不管性能的影响。
在 Windows Server 上,您可以使用名为 Windows 系统资源管理器的工具执行此操作,该工具可以限制进程使用的工作集数量。此工具可通过 Windows Server 2008 R2 上的“添加功能”控制台安装(默认情况下未安装)。
在 Windows 7/8/10 上,没有 Microsoft 解决方案可以做到这一点。您必须安装以下第三方软件:
答案2
进程管理器对我来说效果很好。开源、MIT 许可证、易于使用:
procgov --maxmem 40M your_app.exe
答案3
正如所提到的@Mikhail 的回答,现在可以轻松利用 Windows 内置系统“工作对象”使用免费处理器调速器设置每次启动或持久启动的工具(通过注册表项)CPU 使用率/分配/亲和性、内存使用率和网络使用率的限制。
- 使用该工具作为文档,我怀疑手动注册表项可能使这成为可能,而无需安装任何第三方软件。
- 注意进程管理器:
--recursive
在网络浏览器等程序中使用该选项(以及基于它们的应用程序,例如“Electron”应用程序)确保所有(通常很多)子进程在所需配额范围内。
截至 2022 年的其他可能选择:
不确定是否有操作方法可以做到这一点,但有一个 GPO 安全设置可供用户控制进程内存限制。
- 政策位置:
Computer Configuration\Windows Settings\Security Settings\User Rights Assignment\
- 看调整进程的内存配额@Microsoft Docs
- 政策位置:
运行32 位Excel 版本应该本质上将其可使用的内存量限制为 2GB(或 3GB/4GB,取决于 Windows 版本和设置)的 RAM。
- (遗憾的是,这不适用于 Google Chrome 或 Microsoft Edge 等对每个选项卡使用不同进程的网络浏览器。)
在虚拟机中运行 Excel(例如 Hyper-V)或容器(例如原生 Windows 或通过 Kubernetes)它具有限制 CPU 和 RAM 使用率的内置方法。
- IE:Excel 在运行Kubernetes 命名空间(为该命名空间启用“资源配额”)
- 一些原生的 Windows操作系统级虚拟化软件,比如现在开源的Sandboxie-Plus, 做不是似乎现在支持直接限制CPU或内存使用率(截至 2022 年 8 月)。
具有可能线索或解决方案的较旧问题:
答案4
如果问题是您无法同时在计算机上执行其他操作,您可能需要尝试降低 Excel 的 CPU 优先级。这样,如果您运行其他程序,Excel 将被迫停止并等待,因为您的程序具有更高的优先级。这将需要更长时间才能完成,但您应该能够同时执行其他操作。
Windows 7 说明:
- 打开任务管理器(Ctrl+Alt+Del)
- 打开“进程”选项卡。右键单击 excel.exe 并转到“设置优先级”。
- 选择新优先级。大多数进程以正常方式运行,因此您可以使用低于正常或低。
这是暂时的,因此,如果退出 Excel,则必须再次执行此操作。
来源:https://www.sevenforums.com/tutorials/83361-priority-level-set-applications-processes.html