作者:
hsucheng (Marshall)
2017-08-28 17:29:47開發平台(Platform): (Ex: Win10, Linux, ...)
Win7 VS2015
編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
C++
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
opencv
問題(Question):
目前做的題目是opencv的MLP類神經網路
要嘗試非常多種隱藏層組合,所以有5層的巢狀迴圈
跑到最後記憶體16G也不夠使用就crash了
想知道是甚麼東西占了空間,有甚麼方法可以查看哪個東西使用最多空間嗎?
感謝!
作者:
Ommm5566 (56天團)
2017-08-28 18:52:00我想是double 吧 他比float需要比較多空間
作者:
s4300026 (s4300026)
2017-08-28 19:13:00我想是class
作者:
Qbsuran (Qbsuran)
2017-08-28 20:23:00就memory leak啊 查迴圈內每個函數使用說明
作者:
Ommm5566 (56天團)
2017-08-29 07:14:00問題在你到底在問什麼 "哪個東西"的東西是什麼如果只是因為記憶體不夠 那就寫成檔案後釋放不必要的佔用如果是墮入無窮迴圈 那是程式邏輯問題你的資訊有給和沒給一樣 當別人有水晶球發文格式都給你了 還不會用
找 profiler 測記憶體使用量,結案。我是覺得原 po 要求很清楚啦,就想快速分析哪裡吃太多ram 而已。
gprof + valgrind, leak問題大概都靠這個不過記憶體用量分析的話可能麻煩點看看這對你合不合用
作者: LiloHuang (十年一刻) 2017-08-29 22:46:00
個人建議 Intel Inspector 可先抓試用版來用用看
作者:
tinlans ( )
2017-08-30 02:06:00那你知道 C++ 是需要手動釋放記憶體的嗎?看過一些熟悉其它語言的跑來寫 C++ 只 new 不 delete另一個可能就是你的演算法本身就需要那麼多記憶體,也許要考慮資料庫或 sqlite 的方案,而不是單靠記憶體。
所以我給java過來的人都先塞smart pointer給他們再說XD這種都懂要delete 只是因為以前工作不用 所以都沒習慣不過對於殺掉不該殺的如singleton那種就沒輒了