楼主:
kingofsdtw (ä¸èƒ½é–’下來!!)
2022-09-14 03:53:33首先有个lib 高达4MB
lib中全是静态buffer宣告
主程式和单一thread 共占用了4.1MB
观察了一下当thread开到第10个时候暴增到40MB左右
该如何设计才能避免 每个thread自行复制一份lib function? 或称为各自有静态大buffer.
.
ps.
过去我也以为function是绝对内存位置和大小
不会因为thread增加而内存用量变大...
还是实验方法错误了?
首先你要先确定你的程式真的有复制 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:00char buffer[1024] 没mutex我在研究看看...内存爆了感谢大家
作者:
Lipraxde (Lipraxde)
2022-09-15 00:49:00只有开到十个 thread 的时候会爆?
所以这没加 static,你要确认一下是 global 还是 locallocal 不是静态内存,它是存在 stack 的.....
作者:
enthos (影斯作业系统)
2022-09-15 03:29:00radare2/pwndbg/GEF/peda/Pwngdb 看最后一个github图
作者:
wulouise (在线上!=在电脑前)
2022-09-15 19:02:00你把测试code贴出来才好讨论吧,静态长度要看放哪