[问题] 开thread的内存需求该如何减少?

楼主: kingofsdtw (不能閒下來!!)   2022-09-14 03:53:33
首先有个lib 高达4MB
lib中全是静态buffer宣告
主程式和单一thread 共占用了4.1MB
观察了一下当thread开到第10个时候暴增到40MB左右
该如何设计才能避免 每个thread自行复制一份lib function? 或称为各自有静态大buffer.
.
ps.
过去我也以为function是绝对内存位置和大小
不会因为thread增加而内存用量变大...
还是实验方法错误了?
作者: Schottky (顺风相送)   2022-09-14 04:10:00
是 stack 吧
作者: b0920075 (Void)   2022-09-14 06:10:00
首先你要先确定你的程式真的有复制 lib function 和你所谓的静态 buffer ,一般来说这两个东西应该是 thread会共享的,不会你开一个 thread 就复制一份再来, thread 有各自的 stack ,而 stack 一般来说一次就会分配很多空间省的你一直跟系统要,所以内存越吃越多很正常
作者: wulouise (在线上!=在电脑前)   2022-09-14 22:08:00
静态buffer是static char*[]?这怎会跟thread一起长大...你所谓的开到第十个thread爆增,是fork还是std::thread?
楼主: kingofsdtw (不能閒下來!!)   2022-09-15 00:33:00
char buffer[1024] 没mutex我在研究看看...内存爆了感谢大家
作者: Lipraxde (Lipraxde)   2022-09-15 00:49:00
只有开到十个 thread 的时候会爆?
作者: Schottky (顺风相送)   2022-09-15 03:13:00
所以这没加 static,你要确认一下是 global 还是 locallocal 不是静态内存,它是存在 stack 的.....
作者: enthos (影斯作业系统)   2022-09-15 03:29:00
radare2/pwndbg/GEF/peda/Pwngdb 看最后一个github图
作者: wulouise (在线上!=在电脑前)   2022-09-15 19:02:00
你把测试code贴出来才好讨论吧,静态长度要看放哪

Links booklink

Contact Us: admin [ a t ] ucptt.com