Во-первых, я хочу знать, как установить TCmalloc
в Ubuntu. Тогда мне нужна программа, использующая TCmalloc
. Затем мне нужна небольшая программа, чтобы показать, что TCmalloc
работает лучше, чем PTmalloc
.
Как использовать TCMalloc?
Ответ 1
Я предоставлю другой ответ, поскольку его проще установить, чем в другом ответе:
В Ubuntu уже есть пакет для инструментов Google Perf: http://packages.ubuntu.com/search?keywords=google-perftools
Установив libgoogle-perftools-dev, вы получите все, что требуется для разработки приложений tcmalloc. Что касается того, как на самом деле использовать tcmalloc, см. другой ответ.
Ответ 2
Чтобы установить TCMalloc:
sudo apt-get install google-perftools
Чтобы заменить распределители в общесистемном режиме, отредактируйте /etc/environment
(или экспортируйте из /etc/profile
, /etc/profile.d/*.sh
):
echo "LD_PRELOAD=/usr/lib/libtcmalloc.so.4" | tee -a /etc/environment
Чтобы сделать то же самое в более узкой области, вы можете редактировать ~/.profile
, ~/.bashrc
, /etc/bashrc
и т.д.
Ответ 3
Установка:
sudo apt-get install google-perftools
Создать приложение в Eclipse или любом другом коде композитора
#include <iostream>
#include <unistd.h>
#include <vector>
#include <string>
using namespace std;
class BigNumber
{
public:
BigNumber(int i)
{
cout << "BigNumber(" << i << ")" << endl;
digits = new char[100000];
}
~BigNumber()
{
if (digits != NULL)
delete[] digits;
}
private:
char* digits = NULL;
};
int main() {
cout << "!!!Hello World!!!" << endl; // prints !!!Hello World!!!
vector<BigNumber*> v;
for(int i=0; i< 100; i++)
{
v.push_back(new BigNumber(i));
}
return 0;
}
Этот код поможет вам увидеть, как просачивается память
Затем добавьте библиотеку в свой make файл
-ltcmalloc
при запуске приложения вы хотите создать файл кучи, поэтому вам нужно добавить переменную среды HEAPPROFILE =/home/myuser/prefix и файлы префикса .0001.heap будут созданы в пути /home/myuser
Запустите приложение и файлы кучи будут созданы Изучить файлы кучи
pprof helloworld helloworld.0001.heap --text
Using local file helloworld.
Using local file helloworld.0001.heap.
Total: 9.5 MB
9.5 100.0% 100.0% 9.5 100.0% BigNumber::BigNumber
0.0 0.0% 100.0% 0.0 0.0% __GI__IO_file_doallocate
Легко увидеть, какие объекты просочились и где они были распределены.
Ответ 4
- tcmalloc находится в инструменте google perf, руководство по установке можно найти здесь.
- Пример включен в инструмент google perf
- см. здесь, раздел Замечания по производительности