최근 Matlab의 OOP를 사용하여 일부 코드를 작성했습니다. 각 클래스 객체에서 일부 측정 데이터를 속성으로 저장하고이를 평가하는 방법을 정의합니다. 평균 데이터 세트를 사용하면 하나의 단일 클래스 객체가 약 32MB의 메모리를 사용합니다. 이제 이러한 객체를 처리해야하는 GUI를 작성하고 있습니다.Matlab : 클래스 객체의 사용 가능한 메모리가 없습니다.
첫 번째 단계에서는 저장된 .mat 파일 (약 200 개 개체, 하드 디스크의 2GB)에서 개체 집합을로드하고이를 handles 구조체에 저장합니다. RAM을 가득 채우고로드 할 때 약 6-7GB를 사용합니다. 이것은 아무런 문제가되지 않습니다.
그러나 GUI를 닫으면 사용 된 메모리를 확보 할 수없는 것으로 보입니다. 나는 성공하지 못한 다른 접근법을 시도했다. figure_CloseRequestFcn에서 무료 시도
function delete(obj)
obj.timeVector = [];
obj.valueVector = [];
end
:
클래스의 소멸자에 데이터 필드에 "빈"을 설정
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로 작업 하시겠습니까?
메모리가 여전히 차단되어 있고 사용 중이라고 표시되지 않았습니까? 그래서 정상적인 메모리를 사용한다면, 당신은 다 떨어질 것입니까? 게다가 나는 '모두 깨끗하게'만 생각할 수 있었지만 너무 많은 희망을 품지는 않았다. –
그래서 Matlab에 의해 예약되어 있다고 가정합니다. 그러나 다른 프로그램에 더 많은 RAM이 필요한 경우 Matlab에서 무료로 설정합니까? GUI를 종료하고 다른 RAM을 많이 사용하는 프로그램을 시작하려고 시도한 후 Matlab은 예약 된 메모리 중 일부를 무료로 설정 한 것으로 보입니다 (링크 참조). 방금 GUI/스크립트/함수가 종료 된 후에 Matlab의 메모리 사용량이 정상 "유휴"사용량으로 떨어지기 때문에 혼란 스러웠습니다. http://i.stack.imgur.com/zWrcu.png – idono
GUI를 사용하기 전, 도중, 사용한 후에'memory' 명령의 결과는 무엇입니까? – Pursuit