[問題] 離開副程式時,空間是否會被釋放?已回收

看板MATLAB作者 ( )時間16年前 (2009/04/24 16:22), 編輯推噓2(2012)
留言14則, 3人參與, 最新討論串1/1
想請有經驗或是有興趣的大大,一起來討論一下! 之前的觀念是: 在離開副程式(.m檔)的時候,除了全域變數以外, 其它的資源(區域變數)會被自動釋放掉! 當重新呼叫副程式時,又是一個新的開始! 但最近發現到的情形是,當我重覆呼叫相同的副程式時(研究需要) 電腦內被matlab吃掉的記憶體卻一直升高!沒有被釋放的感覺! 昨天嘗試在 副程式 結束之前,除了回傳值以外的陣列空間都clear掉! 本來記憶體是有控制住,但今天早上將Code放到別台電腦上執行時,卻 發現記憶體又往上升高! 所以想請問一下,是否為觀念錯誤?或需要其它的方式來釋放記憶體? 註: Matlab版本:R2007b 研究方向:視訊編碼 最後,感謝大家不吝指教! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 163.26.228.12

04/24 21:58, , 1F
我覺得看記憶體沒有意義,容量和價格和過去完全不一樣了
04/24 21:58, 1F

04/24 21:59, , 2F
重點是最後有沒有爆滿,爆滿表示程式碼要改比較動態寫法
04/24 21:59, 2F

04/24 22:38, , 3F
= =" 記憶體… 爆了!
04/24 22:38, 3F

04/24 22:39, , 4F
可能是我比較不會表達… 我再想想怎麼解釋現在的情形
04/24 22:39, 4F

04/24 23:12, , 5F
你確定沒有其他東西再佔記憶體?
04/24 23:12, 5F

04/24 23:12, , 6F
matlab可是連A=A';都會用到兩倍A的記憶體喔
04/24 23:12, 6F

04/25 03:55, , 7F
請問… 假設是A=A';的情形下,clear A;就行了嗎?
04/25 03:55, 7F

04/25 04:04, , 8F
在執行那一行的瞬間是用了兩倍..執行完用了一倍
04/25 04:04, 8F

04/25 04:04, , 9F
clear掉當然就不佔了
04/25 04:04, 9F

04/25 10:37, , 10F
那假設,A=A';是在呼叫的副程式中產生,那麼離開副程式時
04/25 10:37, 10F

04/25 10:38, , 11F
就會自動釋放?記憶體的使用量應該要降下來?
04/25 10:38, 11F

04/26 16:40, , 12F
問題已解決,原來是那些被我看不起的全域變數所造成的
04/26 16:40, 12F

04/26 16:41, , 13F
本來以為只是一個變數,佔不了多大的空間!結果是我錯了~
04/26 16:41, 13F

04/26 16:42, , 14F
感謝大家的參與和幫忙!
04/26 16:42, 14F
文章代碼(AID): #19yNQpXR (MATLAB)
文章代碼(AID): #19yNQpXR (MATLAB)