【发布时间】:2015-05-27 20:55:49
【问题描述】:
我已经阅读了几个关于同一主题的类似问题,但我仍然没有设法解决我的问题。 一段时间以来,我遇到了内存不足错误;
这很奇怪,因为我总是在 Matlab 上工作,即使矩阵和数据比现在更大(约 300 万行),以前从未遇到过这个问题;相反,从昨天开始,即使我尝试制作一个简单的零矩阵,我也会收到此错误。 顺便说一句,正如我告诉你的那样,我看到了这里给出的 Mathworks 的建议 http://nl.mathworks.com/help/matlab/matlab_prog/resolving-out-of-memory-errors.html 以及在此处找到的一些已回答问题的内容。 所以我 : 1)增加分页大小设置初始大小10000 MB,最大大小12150 MB 2) 将 Java 堆内存增加到 2025 MB 3) 再次编写将矩阵拆分为非常小的部分的代码
我假设我有一台 8 GB RAM windows 64 位机器。 如果我输入内存命令,我会得到:
有人知道我该怎么做吗?我有点感觉它与计算机有关,而不是与 Matlab 本身有关,但我想听听比我更有经验的人的意见:)
提前谢谢你!!
感谢 Rollen Dsouza 的评论,你是对的,这里是我的犯罪代码:
%% Investigation of negative peaks
%% main
clear all
close all
clc
cd('C:\Users\jemy\Downloads\CURRENT PROJECTS\SPIKE\code');
filename= 'Du-181014_D-ch27-Spikes_TimeStamps';
load(strcat('C:\Users\jemy\Desktop\SpikeS\', filename), 'Spikes');
load(strcat('C:\Users\jemy\Downloads\CURRENT PROJECTS\SPIKE\parameters\stend_', filename));
%% Splitting matrices
dim= size(Spikes, 1);
% First quarter of the file
sub_Spikes= double(Spikes(1:round(dim/16), :));
sub_stend= stend(1:round(dim/16), :);
clear Spikes;
clear Stend;
% Window where double minima will be searched
s= sub_stend(:, 14);
e= sub_stend(:, 5);
% Inizialization of results matrices
minima= zeros(size(sub_Spikes, 1), size(sub_Spikes, 2));
dev= zeros(size(sub_Spikes, 1));
注意:当前大小(sub_Spikes)为 145377x46。
【问题讨论】:
-
呃。也许您应该显示有问题的代码(准确地说是MCVE)。否则没有人能给你任何好的答案。据其他人所知,您使用的内存可能比您想象的要多。
-
抱歉,如果它在零矩阵分配时崩溃,那么 MCVE 并不合适。您是否确认内存中没有其他内容 (
clear all)。 -
两件事,首先你检查过你电脑的可用内存吗?二、你写
clear Stend,stend大吗? -
根据您声明的当前大小规格判断,除非您在后台运行其他一些进程或者@patrik 说,
Stend非常大,否则您不应该出现 OutOfMemory 异常。附:clear区分大小写。
标签: matlab memory memory-management out-of-memory