我在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