在现有的巨大代码中使用jemalloc

时间:2012-06-08 09:44:50

标签: memory malloc profiler

我有大量文件传播的巨大代码。此代码目前使用普通的malloc。

我想在其中实现Jemalloc以获得更好的性能,我还想使用Jemalloc的内存分析器来了解该代码中每个分配的确切方式和位置。

我正在尝试这个超过3个星期。请帮帮我。

提前致谢。

2 个答案:

答案 0 :(得分:12)

在构建没有任何前缀的jemalloc之后,您将拥有一个共享库,其中重新实现了所有malloc系列函数。

假设:Linux环境

如果它在单个终端中运行,您可以在运行应用程序之前使用LD_PRELOAD环境变量来预加载jemalloc.so。类似的东西:

export LD_PRELOAD=$LD_PRELOAD:/path/to/jemalloc-build/lib/jemalloc.so.1

对于受更改影响的所有应用程序,您可以在文件/etc/ld.so.preload中添加一个新行,其中包含lib的路径。 (这在基于Debian的系统中肯定有效,但也可能在其他系统中有效)

答案 1 :(得分:1)

我已经在/ usr / local中安装了我的jemalloc,因此他不在“普通”库路径中。

安装为我创建了一个shell,使用jemalloc库启动程序。

在某种程度上,它会自动执行上面描述的Iulius程序,但它仅对我想要执行的程序使用jemalloc。如果这是预期用途,您可以执行以下操作:

首先,检查路径中某处是否存在小脚本:

me@mypc /root # which jemalloc.sh

<强> /usr/local/bin/jemalloc.sh

如果存在,您可以这样简单地执行您的程序:

me@mypc /root # jemalloc.sh your-program your-program-arguments &

您可以阅读 /usr/local/bin/jemalloc.sh ,以验证它与Iulius描述的方式类似。

me@mypc /root # jemalloc-config --help 会帮助您了解您的jemalloc是如何编译的,以及 me@mypc /root # jemalloc-config --version 会向您显示您的jemalloc版本。

通过这种方式,您可以使用jemalloc验证您的程序是否正常运行,而无需重新编译它们。然后,您可以做出最终决定。

乔治。