Можно ли использовать Google Tcmalloc, чтобы получить использование памяти в каждом потоке - PullRequest
1 голос
/ 02 октября 2011

Как видно из названия, мне интересно, могу ли я видеть использование памяти в каждом потоке для программ, скомпилированных с -ltcmallocAFAIK с обычной памятью malloc связан с процессом, а не с потоком, но я не уверен насчет tcmalloc.

Ответы [ 2 ]

3 голосов
/ 11 февраля 2012

TcMalloc имеет несколько кешей памяти для каждого потока.Но они всего лишь прокси для общей кучи (чтобы уменьшить перегрузку).Вся память в tcmalloc поступает из одного общего пула.

Живая (выделенная) память может свободно передаваться из одного потока в другой, поэтому нелегко сказать, какой поток ее использует.

Вы можете отслеживать, какой поток выделил используемую память, но вам потребуются либо полностью разделенные пулы памяти (не очень эластичные), либо некоторые накладные расходы памяти на распределение.Ни один из них не присутствует в tcmalloc ...

1 голос
/ 02 октября 2011

Нет такого понятия, как использование памяти для каждого потока.Память - это ресурс процесса.

...