更改虚拟内存后,MATLAB中的OUT OF MEMORY错误无法解决

时间:2016-06-11 16:56:34

标签: matlab matlab-guide

如何在MATLAB中处理OUT OF MEMORY问题?我在驱动器C(安装了Windows 8)和E(安装了MATLAB 2015a)中将虚拟内存更改为20GB。我已重新启动计算机并运行代码,但我遇到了同样的问题。

2 个答案:

答案 0 :(得分:1)

您需要更多Java堆内存,而不是虚拟内存可用。

从你的评论看来,你的数组似乎只有大约664 MB的内存可用。假设您的信号是一维的,那么这两个30M样本应该采用:

30M * 2 * 8-Bytes = 480 MBytes

如果你有一些副本,那么你的记忆就会被填满。使用whos命令检查每个变量大小。完成后清除每个变量。即使你的内存不足,也要清除这些变量,以便让java更容易进行内存管理 - >对你来说更快。

答案 1 :(得分:0)

要清楚,长度(yourVector)= 30e6?保留在记忆中可能太过分了。使用fopen / fread将文件加载到块中可能会有所帮助。它是什么类型的文件?

dataType = 'float' ;  % data type
chunkSize = 1e4 ; % load in chunks
fid = fopen(pathToYouFile); frewind(fid); % Read file from the start
fprintf('Loading . . . '); % start notice
while ~feof(fid)    
    theData = fread(fid,[1 chunkSize],dataType); % load chunk
    % do yo thing
end
fprintf('Fini. ');  % all done

FCLOSE(FID);