一个线程大概占用1M左右的内存!
似乎,linux中虚拟内存确实是按照一个线程默认8M来分配的。
但,windows中不是这样的,开启线程后,内存增加很小。
默认情况下,一个线程的栈要预留1M的内存空间,而一个进程中可用的内存空间只有2G,
所以理论上一个进程中最多可以开2048个线程,但是内存当然不可能完全拿来作线程的栈,
所以实际数目要比这个值要小,你也可以通过构造线程时修改默认堆栈大小,将其改的比较小,
这样就可以多开一些线程,如将默认栈的大小改成512K,这样理论上最多就可以开4096个线程,
而一个线程的默认线程栈1024K
AdditionalCriticalWorkerThreads:用于设置额外的关键工作线程。
AdditionalDelayedWorkerThreads:用于设置延迟工作线程。
这两个参数的设置应该尽量避免超过系统的实际线程数,以保持系统稳定性。在这种情况下,Intel Core i5-10400 有 12 个线程(6 核心,支持超线程)。通常来说,可以设置的最大值不会超过实际线程数的 2 到 3 倍,但要避免过多线程导致性能瓶颈或资源耗尽。
物理核心 × 2 =
注册表:
似乎,linux中虚拟内存确实是按照一个线程默认8M来分配的。
但,windows中不是这样的,开启线程后,内存增加很小。
默认情况下,一个线程的栈要预留1M的内存空间,而一个进程中可用的内存空间只有2G,
所以理论上一个进程中最多可以开2048个线程,但是内存当然不可能完全拿来作线程的栈,
所以实际数目要比这个值要小,你也可以通过构造线程时修改默认堆栈大小,将其改的比较小,
这样就可以多开一些线程,如将默认栈的大小改成512K,这样理论上最多就可以开4096个线程,
而一个线程的默认线程栈1024K
AdditionalCriticalWorkerThreads:用于设置额外的关键工作线程。
AdditionalDelayedWorkerThreads:用于设置延迟工作线程。
这两个参数的设置应该尽量避免超过系统的实际线程数,以保持系统稳定性。在这种情况下,Intel Core i5-10400 有 12 个线程(6 核心,支持超线程)。通常来说,可以设置的最大值不会超过实际线程数的 2 到 3 倍,但要避免过多线程导致性能瓶颈或资源耗尽。
物理核心 × 2 =
注册表:
Windows Registry Editor Version 5.00 ;可用的工作线程,并优化CPU能力 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Executive] "AdditionalCriticalWorkerThreads"=dword:00000018 ;额外分配给处理关键任务的线程数量,关键任务通常指的是那些需要尽快完成,以保证系统稳定性和响应性的任务 "AdditionalDelayedWorkerThreads"=dword:00000018 ;额外分配给处理延迟任务(即那些可以稍后处理的任务)的线程数量 |
文章来源:
网络小编D
版权声明:
本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请联系本站立刻删除。
