在碰到Out of Memory的时候,首先可能会想到增加系统的虚拟内存,在论坛搜索了一下,曾经有几位朋友说过pack函数,但是只是说使用pack函数来整理内存,那么,pack函数到底是什么机制呢?
这里参考了MATLAB的help文档,话说回来,help始终是学习MATLAB的“金参考标准”。
用法:
pack
pack filename
pack('filename')
第三者为第二者的函数方式。
pack可以为用户整理内存的机制在于,pack函数重新整理MATLAB工作空间中驻留的变量,将原来断断续续的内存整理的连续起来,这样原来断断续续的内存可能不足以存储大的矩阵,而整理之后,可以很显著的提高内存的使用效率。整理步骤:
(1) 将base空间以及全局变量保存到一个mat文件
(2) 清空工作空间中的所有资源
(3) 重新载入mat文件中保存的base空间变量和全局变量,然后删掉mat文件
这样一来,重新分配的空间将是连续的,避免掉原来断断续续的内存使用。
这里参考了MATLAB的help文档,话说回来,help始终是学习MATLAB的“金参考标准”。
用法:
pack
pack filename
pack('filename')
第三者为第二者的函数方式。
pack可以为用户整理内存的机制在于,pack函数重新整理MATLAB工作空间中驻留的变量,将原来断断续续的内存整理的连续起来,这样原来断断续续的内存可能不足以存储大的矩阵,而整理之后,可以很显著的提高内存的使用效率。整理步骤:
(1) 将base空间以及全局变量保存到一个mat文件
(2) 清空工作空间中的所有资源
(3) 重新载入mat文件中保存的base空间变量和全局变量,然后删掉mat文件
这样一来,重新分配的空间将是连续的,避免掉原来断断续续的内存使用。
需要注意的是pack不能提高MATLAB所拥有的虚拟内存数量,如果想要增加这个数量,也就是使MATLAB单独变量的最大size或者同时存在的变量所占有的最大空间增大,需要提高系统的虚拟内存。
转自:http://www.ilovematlab.cn/thread-95315-1-1.html