gpt4 book ai didi

c++ - 线程首次创建时消耗多少内存?

转载 作者:可可西里 更新时间:2023-11-01 17:38:44 26 4
gpt4 key购买 nike

我知道在应用程序中创建太多线程并不是您所说的其他正在运行的进程的“好邻居”,因为即使这些线程处于高效休眠状态也会消耗 CPU 和内存资源。

我感兴趣的是:休眠线程消耗了多少内存(win32 平台)?

理论上,我假设在 1mb 左右的某个地方(因为这是默认的堆栈大小),但我很确定它小于这个,但我不确定为什么。

我们将不胜感激。

(我问的原因是我正在考虑引入一个线程池,我想了解通过创建一个包含 5 个线程的池与手动创建 20 个线程相比可以节省多少内存创建线程)

最佳答案

我有一个线程使用率很高的服务器应用程序,它使用由客户设置的可配置线程池,并且至少在一个站点中它有 1000 多个线程,并且在启动时仅使用 50 MB .原因是 Windows 保留 1MB 给堆栈(它映射它的地址空间),但它不一定分配在物理内存中,只是其中的一小部分。如果堆栈增长超过该值,则会生成页面错误并分配更多物理内存。我不知道初始分配是多少,但我假设它等于系统的页面粒度(通常为 64 KB)。当然,该线程在创建时也会为其他事情(TLS、TSS 等)使用更多的内存,但我猜测总数约为 200 KB。请记住,任何不经常使用的内存都会被虚拟内存管理器卸载。

关于c++ - 线程首次创建时消耗多少内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/256188/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com