我有一个程序,每个线程需要2到4M内存。线程不断产生(比如20个线程),所以一旦它产生它需要2k到4m之间的内存(随机),使用它,退出并再次产生。 现在我想知道我应该为每个线程分配一次4M内存的最大值并使用该内存,即使我需要较少的内存,这样可以避免每次分配和释放内存,并且可以防止碎片。但缺点是,当线程数增加到100或更多时,我发现很多页面错误发生。
不确定如何决定实施。有什么建议有帮助吗?
答案 0 :(得分:0)
通常(此描述值得注意的例外:移动设备),驻留在进程中的所有线程都有一个堆。如果线程分配内存,则会将其添加到进程地址空间。如果线程死了并且出现了一个新线程,它可以重新分配前一个线程使用的内存。
您可能希望使用操作系统服务或库函数预先分配合适大小的堆,以便不会不断扩展堆。