Hav*_*veF 4 matlab out-of-memory
我想知道为什么Matlab不使用swap,而是抛出错误"Out of memory"?
Matlab不应该放慢速度而不是抛出"内存不足"吗?
这与Java有关吗?
补充说:
我知道"内存不足"意味着它没有连续的记忆.不交换有连续的内存,还是?我糊涂了...
它与MATLAB无关.当您尝试分配比硬件中存在的内存更多的内存时,会发生什么操作是特定于操作系统
在Linux上,默认情况下,操作系统将"乐观地"分配几乎任何你想要的东西,即交换空间也算作可分配内存.你会得到你想要的 - 没有OOM错误,但交换分配数据的计算速度慢.这个"功能"被称为overcommit.您可以通过修改Linux中的过度使用设置来更改此行为(请查看此处的简要摘要).
使用它来解决MATLAB中的大问题可能不是最好的想法,因为整个操作系统开始工作的速度非常慢.它绝对不能与有意识地在计算中使用硬盘的优化的"核外"实现进行比较.
这就是它在Linux上的表现.我不知道如何更改Windows上的内存分配行为,但我怀疑你真的想这样做.你需要更多的RAM.
你确实混淆了东西 - 交换与连续的记忆无关.由OS分配的内存是"虚拟内存",无论底层物理内存是否可以映射到连续页面,它都是连续的.
编辑对于使用磁盘空间作为额外内存的大型基质上的透明"核外"操作,您可能希望查看VVAR fileexchange项目.这个类假装是一个通常的MATLAB类,但它在底层的HDD文件上运行.请注意,MATLAB 通常的数组大小限制仍然适用.