[問題] 開thrrad的記憶體需求該如何減少?

看板C_and_CPP (C/C++)作者 (塔綠班)時間2年前 (2022/09/14 03:53), 2年前編輯推噓6(6011)
留言17則, 6人參與, 2年前最新討論串1/1
首先有個lib 高達4MB lib中全是靜態buffer宣告 主程式和單一thread 共占用了4.1MB 觀察了一下當thread開到第10個時候暴增到40MB左右 該如何設計才能避免 每個thread自行複製一份lib function? 或稱為各自有靜態大buffer. . ps. 過去我也以為function是絕對記憶體位置和大小 不會因為thread增加而記憶體用量變大... 還是實驗方法錯誤了? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 106.64.122.32 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1663098815.A.5B2.html ※ 編輯: kingofsdtw (106.64.122.32 臺灣), 09/14/2022 04:06:24

09/14 04:10, 2年前 , 1F
是 stack 吧
09/14 04:10, 1F

09/14 06:10, 2年前 , 2F
首先你要先確定你的程式真的有複製 lib function 和你
09/14 06:10, 2F

09/14 06:10, 2年前 , 3F
所謂的靜態 buffer ,一般來說這兩個東西應該是 thread
09/14 06:10, 3F

09/14 06:10, 2年前 , 4F
會共享的,不會你開一個 thread 就複製一份
09/14 06:10, 4F

09/14 06:16, 2年前 , 5F
再來, thread 有各自的 stack ,而 stack 一般來說一
09/14 06:16, 5F

09/14 06:16, 2年前 , 6F
次就會分配很多空間省的你一直跟系統要,所以記憶體越
09/14 06:16, 6F

09/14 06:16, 2年前 , 7F
吃越多很正常
09/14 06:16, 7F

09/14 22:08, 2年前 , 8F
靜態buffer是static char*[]?這怎會跟thread一起長大...
09/14 22:08, 8F

09/14 22:09, 2年前 , 9F
你所謂的開到第十個thread爆增,是fork還是std::thread?
09/14 22:09, 9F

09/15 00:33, 2年前 , 10F
char buffer[1024] 沒mutex
09/15 00:33, 10F

09/15 00:34, 2年前 , 11F
我在研究看看...記憶體爆了
09/15 00:34, 11F

09/15 00:35, 2年前 , 12F
感謝大家
09/15 00:35, 12F

09/15 00:49, 2年前 , 13F
只有開到十個 thread 的時候會爆?
09/15 00:49, 13F

09/15 03:13, 2年前 , 14F
所以這沒加 static,你要確認一下是 global 還是 local
09/15 03:13, 14F

09/15 03:13, 2年前 , 15F
local 不是靜態記憶體,它是存在 stack 的.....
09/15 03:13, 15F

09/15 03:29, 2年前 , 16F
radare2/pwndbg/GEF/peda/Pwngdb 看最後一個github圖
09/15 03:29, 16F

09/15 19:02, 2年前 , 17F
你把測試code貼出來才好討論吧,靜態長度要看放哪
09/15 19:02, 17F
文章代碼(AID): #1Z8D-_Mo (C_and_CPP)
文章代碼(AID): #1Z8D-_Mo (C_and_CPP)