I came across this piece of advice on the Google's tcmalloc documentation page.
You can use TCMalloc in applications you didn't compile yourself, by using LD_PRELOAD:
$ LD_PRELOAD="/usr/lib/libtcmalloc.so"LD_PRELOAD is tricky, and we don't necessarily recommend this mode of usage.
Why do they discourage LD_PRELOAD? Is something inherently wrong with it? Is normal linking more robust? How?
When using LD_PRELOAD, the tcmalloc implementation will be used for any child process as well which may not be what you want.
In addition to ysdx' answer, the value of LD_PRELOAD will also be ignored (for good reasons) for setuid()ed programs.
Depending on the use-case, this might be undesirable. For example, you cannot write a shell script wrapper that exports LD_PRELOAD and then executes the actual program.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With