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