2015年11月19日 星期四

[MATLAB] 釋放不需要使用的記憶體

由於實驗處理數據上的需要

我需要連續對好幾張影像,進行讀取檔案,並進行處理完成之後

發現記憶體的資源卻依然被占用者沒有釋放出來

如果所需要處理的影像達到好幾GB,使用完之後卻沒有辦法進行卸貨的動作

佔用記憶體,卻不需要使用,實在是一件令人困擾的事情

看來大家都曾經有過相關的困擾

例如下面的文章

StackOverFlow : MatLab: How to unload matrix and free memory


上網搜尋了一下,有幾個相關的指令能夠幫助我們解決問題

我目前成功使用的是 Clear 指令,它可以針對你所需要清除的該項資料進行清除

使用過後開啟工作管理員作個驗證,例如下圖一所示


圖一、記憶體資源釋放


像是清除特定變數資料

Clear Specific Variables by Name

Using regular expressions, clear those variables with names that begin with Mon, Tue, or Wed.

clear -regexp ^Mon ^Tue ^Wed;

如果要清除的不只有一個變數,還有牽涉到不同的資料型別

則可以創造一個 cell,把這些資料變數名稱儲存在list中

varlist = {'v1','v2','time'}; 
clear(varlist{:});
------------------------------------------------------------------------------

如果是使用讀取影像或是影片的物件(obj),使用完之後想要刪除它們的話

則可以使用 flushdata delete 指令

若想要知道詳細的MATLAB管理記憶體的一些知識

可以看官網的 Managing Memory Usage 條目,裡面有更詳細的敘述

沒有留言:

張貼留言

/* 載入prettify的autoloader */ /* 載入JQuery */