[問題] 如何知道什麼東西占用的空間最大?

看板C_and_CPP (C/C++)作者 (Marshall)時間8年前 (2017/08/28 17:29), 8年前編輯推噓4(6215)
留言23則, 7人參與, 最新討論串1/1
開發平台(Platform): (Ex: Win10, Linux, ...) Win7 VS2015 編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出) C++ 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) opencv 問題(Question): 目前做的題目是opencv的MLP類神經網路 要嘗試非常多種隱藏層組合,所以有5層的巢狀迴圈 跑到最後記憶體16G也不夠使用就crash了 想知道是甚麼東西占了空間,有甚麼方法可以查看哪個東西使用最多空間嗎? 感謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 163.18.57.175 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1503912589.A.B08.html

08/28 18:52, , 1F
我想是double 吧 他比float需要比較多空間
08/28 18:52, 1F

08/28 19:13, , 2F
我想是class
08/28 19:13, 2F
謝謝回應,我知道我的問題很LOW, 因為這支程式只是拿來驗證用的,主要學的不是C++, 不知道為何一直累積記憶體,請問我還需要提供那些資訊呢? ※ 編輯: hsucheng (1.172.251.249), 08/28/2017 19:28:35

08/28 20:23, , 3F
就memory leak啊 查迴圈內每個函數使用說明
08/28 20:23, 3F

08/29 07:14, , 4F
問題在你到底在問什麼 "哪個東西"的東西是什麼
08/29 07:14, 4F

08/29 07:16, , 5F
如果只是因為記憶體不夠 那就寫成檔案後釋放不必要的佔
08/29 07:16, 5F

08/29 07:16, , 6F
08/29 07:16, 6F

08/29 07:17, , 7F
如果是墮入無窮迴圈 那是程式邏輯問題
08/29 07:17, 7F

08/29 07:17, , 8F
你的資訊有給和沒給一樣 當別人有水晶球
08/29 07:17, 8F

08/29 07:49, , 9F
發文格式都給你了 還不會用
08/29 07:49, 9F

08/29 09:34, , 10F
找 profiler 測記憶體使用量,結案。
08/29 09:34, 10F

08/29 09:36, , 11F
我是覺得原 po 要求很清楚啦,就想快速分析哪裡吃太多
08/29 09:36, 11F

08/29 09:36, , 12F
ram 而已。
08/29 09:36, 12F

08/29 20:28, , 13F
gprof + valgrind, leak問題大概都靠這個
08/29 20:28, 13F

08/29 20:29, , 14F
不過記憶體用量分析的話可能麻煩點
08/29 20:29, 14F

08/29 20:29, , 15F
看看這對你合不合用
08/29 20:29, 15F

08/29 22:46, , 16F
個人建議 Intel Inspector 可先抓試用版來用用看
08/29 22:46, 16F

08/30 02:06, , 17F
那你知道 C++ 是需要手動釋放記憶體的嗎?
08/30 02:06, 17F

08/30 02:06, , 18F
看過一些熟悉其它語言的跑來寫 C++ 只 new 不 delete
08/30 02:06, 18F

08/30 02:08, , 19F
另一個可能就是你的演算法本身就需要那麼多記憶體,也許
08/30 02:08, 19F

08/30 02:09, , 20F
要考慮資料庫或 sqlite 的方案,而不是單靠記憶體。
08/30 02:09, 20F

08/30 07:18, , 21F
所以我給java過來的人都先塞smart pointer給他們再說XD
08/30 07:18, 21F

08/30 07:18, , 22F
這種都懂要delete 只是因為以前工作不用 所以都沒習慣
08/30 07:18, 22F

08/30 07:18, , 23F
不過對於殺掉不該殺的如singleton那種就沒輒了
08/30 07:18, 23F
文章代碼(AID): #1Pe-ADi8 (C_and_CPP)
文章代碼(AID): #1Pe-ADi8 (C_and_CPP)