[英]Why does the memory consumption grows when using more threads on Linux? (C++)
程序:
我為大量數據創建了一個C ++計算程序,可以在一個或多個線程上運行。 (通過配置文件)
程序環境如下:C ++,OpenMp,Redhat-x64,malloc / free
Linux上的結果:
Windows上的結果:
題:
為什么在Linux上使用更多線程時內存消耗會增加?
一個公平的猜測是,Linux中的delete
將緩存釋放的內存以用於未來的new
請求,就像在Windows上一樣,但Linux每個線程都有一個緩存,而Windows每個進程都有一個緩存。
(更准確地說,將是C ++運行時庫確定這樣的緩存如何工作)。
使用/proc/<PID>/maps
或更好的pmap(1)
來確定頁面的去向。
您啟動的每個線程都需要一個分配用於運行它的堆棧,以及用於任何線程局部變量的內存。 我不完全確定每個線程150Mb看起來合理,但線程本地數組可能會導致類似的東西。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.