作者kingofsdtw (塔绿班)
看板C_and_CPP
标题[问题] 开thrrad的记忆体需求该如何减少?
时间Wed Sep 14 03:53:33 2022
首先有个lib 高达4MB
lib中全是静态buffer宣告
主程式和单一thread 共占用了4.1MB
观察了一下当thread开到第10个时候暴增到40MB左右
该如何设计才能避免 每个thread自行复制一份lib function? 或称为各自有静态大buffer.
.
ps.
过去我也以为function是绝对记忆体位置和大小
不会因为thread增加而记忆体用量变大...
还是实验方法错误了?
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 106.64.122.32 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1663098815.A.5B2.html
※ 编辑: kingofsdtw (106.64.122.32 台湾), 09/14/2022 04:06:24
1F:推 Schottky: 是 stack 吧 09/14 04:10
2F:推 b0920075: 首先你要先确定你的程式真的有复制 lib function 和你 09/14 06:10
3F:→ b0920075: 所谓的静态 buffer ,一般来说这两个东西应该是 thread 09/14 06:10
4F:→ b0920075: 会共享的,不会你开一个 thread 就复制一份 09/14 06:10
5F:推 b0920075: 再来, thread 有各自的 stack ,而 stack 一般来说一 09/14 06:16
6F:→ b0920075: 次就会分配很多空间省的你一直跟系统要,所以记忆体越 09/14 06:16
7F:→ b0920075: 吃越多很正常 09/14 06:16
8F:推 wulouise: 静态buffer是static char*[]?这怎会跟thread一起长大... 09/14 22:08
9F:→ wulouise: 你所谓的开到第十个thread爆增,是fork还是std::thread? 09/14 22:09
10F:→ kingofsdtw: char buffer[1024] 没mutex 09/15 00:33
11F:→ kingofsdtw: 我在研究看看...记忆体爆了 09/15 00:34
12F:→ kingofsdtw: 感谢大家 09/15 00:35
13F:→ Lipraxde: 只有开到十个 thread 的时候会爆? 09/15 00:49
14F:→ Schottky: 所以这没加 static,你要确认一下是 global 还是 local 09/15 03:13
15F:→ Schottky: local 不是静态记忆体,它是存在 stack 的..... 09/15 03:13
16F:推 enthos: radare2/pwndbg/GEF/peda/Pwngdb 看最後一个github图 09/15 03:29
17F:推 wulouise: 你把测试code贴出来才好讨论吧,静态长度要看放哪 09/15 19:02