How To Use TCMalloc?

£可爱£侵袭症+ 提交于 2019-12-06 19:28:14

问题


Firstly, I want to know how to install TCmalloc in Ubuntu. Then I need a program uses TCmalloc. Then I need a small program to show that TCmalloc is working better than PTmalloc.


回答1:


I'll provide another answer since there's an easier way to install it than in the other answer:

Ubuntu already has a package for google perf tools: http://packages.ubuntu.com/search?keywords=google-perftools

By installing libgoogle-perftools-dev you should get all that is required for developing tcmalloc applications. As for how to actually use tcmalloc, see the other answer.




回答2:


To install TCMalloc:

sudo apt-get install google-perftools

To replace allocators in system-wide manner I edit /etc/environment (or export from /etc/profile, /etc/profile.d/*.sh):

echo "LD_PRELOAD=/usr/lib/libtcmalloc.so.4" | tee -a /etc/environment

To do the same in more narrow scope you can edit ~/.profile, ~/.bashrc, /etc/bashrc, etc.




回答3:


Install:

sudo apt-get install google-perftools

Create an application in eclipse or any other code composer

#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;
}

This code will help you see how memory is leaking

Then add the library to your makefile

-ltcmalloc

when running the application, you want to create a heap file, so you need to add an environment variable HEAPPROFILE=/home/myuser/prefix and files prefix.0001.heap will be created in the /home/myuser path

Run the application and heap files will be created Examine heap files

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

Easy to see which objects leaked and where were they allocated.




回答4:


  1. tcmalloc is in the google perf tool, installation guide could be found here.
  2. The example is included in the google perf tool
  3. see here, section Performance Notes


来源:https://stackoverflow.com/questions/29205141/how-to-use-tcmalloc

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!