Как использовать TCMalloc?

Во-первых, я хочу знать, как установить TCmalloc в Ubuntu. Тогда мне нужна программа, использующая TCmalloc. Затем мне нужна небольшая программа, чтобы показать, что TCmalloc работает лучше, чем PTmalloc.

Ответ 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
  • см. здесь, раздел Замечания по производительности