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