Что означает «TCMalloc в настоящее время не возвращает никакой памяти в систему». - PullRequest
3 голосов
/ 12 мая 2011

В http://goog -perftools.sourceforge.net / doc / tcmalloc.html указано: «CMalloc в настоящее время не возвращает никакой памяти в систему». Я предполагаю, что это означает, что если я выделю 42 МБ и освободлю его, система не получит его обратно, но в следующий раз, когда я выделю 47 МБ, он украдет только на 5 МБ больше? Мой вопрос, что происходит с загруженными модулями dll или .so. Получают ли они свой кусок памяти, который не освобождается до выхода из программы. Я спрашиваю, потому что, если я хочу написать обновляемый SW во время выполнения, я должен загрузить новые библиотеки DLL, не выходя из программы. Итак, мой вопрос: если я использую -ltcmalloc, и я постоянно загружаю и выгружаю dll, которые выделяют и освобождают память, это заставит использование памяти взорваться? Я предполагаю, что это глупый вопрос, но я не знаю, использует ли каждая dll свою собственную систему выделения памяти или если распределение памяти происходит на уровне процесса.

1 Ответ

3 голосов
/ 12 мая 2011

Память принадлежит процессу, а не DLL.Таким образом, память, как правило, будет удерживаться до завершения процесса.Это общая особенность большинства реализаций malloc, а не только та, о которой вы спрашиваете.

...