有时当您要求 matlab 创建一个非常大的数组时,它会超出实际 RAM 并尝试进入硬盘,这会大大降低计算机的速度,以至于无法关闭 matlab,唯一的选择是使用电源按钮。
我只想禁用 matlab 对硬盘 RAM 的访问。
有两个相关问题,但没有什么真正有用的:
https://www.mathworks.com/matlabcentral/answers/34923-limiting-matlab-memory-usage
答案1
有时当你要求 matlab 创建一个非常大的数组时,它会超出实际的 RAM 并尝试进入硬盘,这会降低计算机的速度
呃,有点不对。实际上,Windows 不会分配 RAM。它分配的是虚拟地址空间(如您在提交代码中看到的那样)。
当需要使用这个分配的空间时,它会尝试使用空闲的 RAM。
如果没有空闲的 RAM,它会尝试释放一些。例如,通过将一些信息从内存写入页面文件。
这不是每个应用程序的情况,而是系统上所有内存使用的情况。
以至于无法关闭 matlab,唯一的选择是使用电源按钮。
这里最有可能的问题是,你有一个应用程序触发了大量磁盘 IO。该磁盘由其他应用程序和操作系统共享。这意味着操作系统也会变慢。
解决方案:
- 以某种方式限制 matlab 的内存上限。作业对象可能会有效果,尽管我从来没有用过它。
- 或者获得更快的 IO。(减轻 IO 减速)。
- 或者在虚拟机中运行 matlab(您可以限制虚拟机内存)。
答案2
这将有助于解决 IO 争用。
- 获取具有 5 倍或更多 IO 的 SSD。
- 添加第二个硬盘并将交换文件移动到其中(操作系统和交换文件永远不会以这种方式共享 IO)
- 1 和 2
碎片整理会有些许帮助,但不会产生任何奇迹。
关闭或者限制windows交换文件会导致windows变得缓慢而且难看。