none
記憶體管理問題 RRS feed

  • 問題

  • 各位先進好!,小弟目前所撰寫的專案在記憶體管理上有幾個問題請教:

    Q1:請問我程式開啟後我觀察裝置管理員的記憶體使用量為2.37GB(電腦為4GB),

          想要請問先進們,我要如何降低我的記憶體使用量呢?

    Q2:我這個專案是做AOI檢測的,所以我會做連續取像與二值化的動作,我在連續取像

         時為了要將Mat型態轉為byte型態有做了型態的轉換,但是這樣每一張都做轉換我

         的記憶體一下就爆炸了,後來我改成我單張取像時,再做型態的轉換,但是我只要做一

         次轉換記憶體就會長一些(0.05GB左右),只是每次做完取像二值化後,

         一定要做Dispose來釋放記憶體,這樣可以減少記憶體的增長,

         我想請問先進我這樣的作法對嗎?還是有更好的做法呢?(程式開啟時記憶體為

         2.37GB,執行取像與二值化後記憶體為2.42GB,Dispose後一段時間記憶體為

         2.35GB)

    Q3:我在網路上有爬過Dispose與GC Collect的用法,我有個疑問,

         我程式中寫了一堆東西我是有那些東西需要手動用Dispose刪除的(我目前只有

         用在Image的創建上),再請先進們解答一下,感謝!


    • 已編輯 seanhua 2018年8月31日 上午 08:58 排版問題
    2018年8月31日 上午 08:55

解答

所有回覆

  • 參考這篇:

    [VBNET] WebBrowser Control 壓抑記憶體膨脹


    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?

    • 已標示為解答 seanhua 2018年9月3日 上午 09:25
    2018年8月31日 下午 03:30
  • 感謝 心冷熱情熄先進的回覆,小弟我再測試看看!
    2018年9月3日 上午 12:51
  • 心冷熱情熄先進 您好!有個問題想要請教一下,

    之前跟您提到的問題我利用記憶體釋放的程式

    去執行已經可以抑制記憶體增長的問題,

    但是我觀察到我的記憶體使用會佔掉2.54G(60%),

    devenv.exe*32 佔了166,016k

    Project.exe 佔了268,524k(執行連續取像時)

    Microsoft.VsHub.Serve 佔了102,600k

    我有爬過文有人說devenv.exe只有在開發機時才會有,

    當變成執行檔時,就不會有那個檔案了,

    Microsoft.VsHub.Serve只須要將診斷工具關閉即可,

    那我Project所佔的記憶體,這麼大268MB會是我程式寫得不好嗎?

    還是我的Public變數用太多?再請先進回覆一下,感謝!

    2018年9月4日 上午 01:02
  • 處理圖形本來就會很大。你要抓你主要陣列跟圖片大概多大,同時開幾個才能估算是不是正確的大小。


    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?

    2018年9月4日 下午 03:36
  •  心冷情熱熄 先進您好!小弟目前就只有一支CCD那它的影像尺寸為500萬黑白像素的,

                     目前我都是重覆一直取代一張圖ImgIn來源圖檔,

                     還沒有用到陣列存放與取代圖片,

                     目前看起來就是只有開啟連續取像時,記憶體會跑到268MB,

                     程式一開啟沒有執行任何東西,記憶體約16MB左右,

                     一般是如何評估的呢?

                     再請您解答一下,感謝了!

    2018年9月5日 上午 12:42
  • 在記憶體內的格式一律是全彩

    五百萬畫素大概是 2560 x 1920

    佔的 bytes 數為 2560 x 1920 x 4 = 19,660,800 = 19.6 MB

    每個有暫存該圖檔的 Image 類型變數就差不多吃 20 MB ,再看你處理影像還有沒有其他佔存變數。


    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?

    2018年9月5日 下午 02:36
  • 感謝!心冷情熱熄 先進的詳細回覆,經先進的提醒,

    我想有可能是我在其他點位量測時還有來源圖給複製出來使用,

    所以造成記憶體變大的情況,我再研究看看可以怎麼修改!感恩!

    2018年9月6日 上午 12:39