我在Google的tcmalloc文档页面上看到了这条建议。为什么不鼓励LD_PRELOAD的使用?
您可以使用TCMalloc在应用中,你没有自己编译,通过使用LD_PRELOAD:
$ LD_PRELOAD="/usr/lib/libtcmalloc.so"
LD_PRELOAD是棘手的,而且我们也无意建议使用这种模式。
为什么他们不鼓励LD_PRELOAD?它有什么内在的错误吗?正常链接更强大吗?怎么样?
我在Google的tcmalloc文档页面上看到了这条建议。为什么不鼓励LD_PRELOAD的使用?
您可以使用TCMalloc在应用中,你没有自己编译,通过使用LD_PRELOAD:
$ LD_PRELOAD="/usr/lib/libtcmalloc.so"
LD_PRELOAD是棘手的,而且我们也无意建议使用这种模式。
为什么他们不鼓励LD_PRELOAD?它有什么内在的错误吗?正常链接更强大吗?怎么样?
除了ysdx的回答中,LD_PRELOAD
will also be ignored值(有很好的理由)为setuid()
编程序。
根据使用情况,这可能是不可取的。例如,您不能编写一个输出LD_PRELOAD
然后执行实际程序的shell脚本包装器。
当使用LD_PRELOAD
时,tcmalloc
实现将用于任何子进程,也可能不是您想要的。
那么文档提出了一种做某事的方法,但他们不希望人们在这里使用“LD_PRELOAD”来插入错误的原因。 – 2014-12-05 08:38:17
那些不好的理由是我想理解的。他们只说这很棘手 – Sam 2014-12-05 08:57:47