最近寫了乙個halcon聯合c#的程式,實際使用過程中發現執行乙個小時多一點點就會報錯,大概估計是記憶體方向的問題,去看了windows錯誤日誌,鎖定了是:
system.outofmemoryexception
也就是記憶體溢位了,回過頭來去查**,把halcon中的object物件使用後均釋放掉,同時模板匹配控制代碼使用後清除,因為呼叫模板是從本地呼叫,該資源不會被gc**,需要手動釋放。
在測試過程中發現了乙個其他問題即如果hobject物件沒有釋放,在進行其他操作需要大量記憶體時(比如我這裡的bmp轉himage),幾個相機同時呼叫轉換方法,手動加速進行測試發現在第7-10次就會報錯,此時將所有hobject使用後進行釋放,加速測試也不會報錯。底層到底是怎麼做的還不得而知,我感覺像是hobject還沒來得及被gc**,包括轉換方法內部的物件也沒有被**,連續呼叫超過閾值就報錯。總結
在使用halcon的物件後,盡量手動將其釋放,halcon運算元中呼叫本地資源的控制代碼,一定要清理掉。
清理控制代碼目的是釋放資源,程式長時間執行不會記憶體溢位
釋放物件是減少了程式執行時的記憶體占用,避免超限
如有錯誤,還請指正!
tensorflow記憶體溢位問題
tensorflow的靜態圖結構簡潔清晰,符合人的思維。雖然程式設計上略微有些複雜,但是原理很容易看懂。tensorflow分建圖過程和執行圖 張量求值 兩個階段,在這兩個階段中都可以定義操作和張量。但是有乙個非常容易犯的錯誤 把操作定義在迴圈裡面。例如下面這個例子,tf.assign操作放在了迴圈...
opencv 記憶體溢位問題
問題 1 iplimage imglp cvcreateimage cvgetsize ilipsrc ilipsrc depth,ilipsrc nchannels imglp ct.rgb2cnorm ilipsrc 這時,在rgb2cnorm函式中的返回值如果還cvcreateimage的話,...
web 應用記憶體溢位問題
現象是 web應用不能訪問,檢視tomcat日誌 permgen space的全稱是permanent generation space,是指記憶體的永久儲存區域,這塊記憶體主要是被jvm存放class和meta資訊的,class在被loader時就會被放到permgenspace中,它和存放類例項...