我最近用Matlab的OOP编写了一些代码。在每个类对象中,我将一些测量数据保存为属性并定义评估它们的方法。对于平均数据集,一个类对象使用大约32 MB的内存。 现在我正在编写一个应该处理这些对象的GUI。Matlab:类对象的自由存储器
在第一步中,我从已保存的.mat文件(大约200个对象,2GB硬盘上)加载一组对象,并将它们存储在句柄结构中。它们填充RAM并在加载时使用大约6-7 GB。这没有问题。
但是,如果我关闭GUI,似乎我无法释放使用过的内存。 我尝试过不同的方法,但没有成功。
设置数据字段为“空”在类的析构函数:
function delete(obj)
obj.timeVector = [];
obj.valueVector = [];
end
尝试释放它在figure_CloseRequestFcn:
function figure_CloseRequestFcn(hObject, eventdata, handles)
handles.data = [];
handles = rmfield(handles,'data');
guidata(hObject,handles);
clear handles;
pack; %Matlab issues a warning, that pack could only
%be used from the command line, but that did
%not work either
delete(hObject);
end
任何想法,除了后关闭Matlab的每一次使用GUI?
你确定内存仍然被阻塞,而不是只显示被占用?所以如果你使用正常数量的内存,你会用完吗?此外,我只能想到“清除所有”,但没有太多的希望。 – 2013-02-12 13:57:40
所以我假设它只是由Matlab保留,但如果另一个程序需要更多的RAM,Matlab会将其设置为空闲的?我试图退出GUI,启动另一个RAM密集型程序,停止后,Matlab似乎释放了一些保留的内存(请参阅链接)。我只是感到困惑,因为通常在GUI /脚本/函数退出后,Matlab的内存使用量降至正常的“空闲”使用率。 http://i.stack.imgur.com/zWrcu.png – idono 2013-02-12 15:07:59
在使用GUI之前,使用过程中以及使用GUI之后,“内存”命令的结果是什么? – Pursuit 2013-02-12 15:57:51