我最近用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