我最近使用 Matlab 的 OOP 编写了一些代码。在每个类对象中,我将一些测量数据保存为属性并定义评估它们的方法。对于平均数据集,一个类对象使用大约 32 MB 的内存。现在我正在编写一个应该处理这些对象的 GUI。
在第一步中,我从保存的 .mat 文件(大约 200 个对象,硬盘上 2GB)加载一组对象并将它们存储在句柄结构中。它们填满 RAM 并在加载时使用大约 6-7 GB。这没有问题。
但是如果我关闭 GUI,我似乎无法释放已使用的内存。我尝试了不同的方法,但没有成功。
在类的析构函数中将数据字段设置为“空”:
function delete(obj)
obj.timeVector = [];
obj.valueVector = [];
end
在图中尝试释放它_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
除了在使用 GUI 后每次都关闭 Matlab 之外,还有什么想法吗?