我有大量文件传播的巨大代码。此代码目前使用普通的malloc。
我想在其中实现Jemalloc以获得更好的性能,我还想使用Jemalloc的内存分析器来了解该代码中每个分配的确切方式和位置。
我正在尝试这个超过3个星期。请帮帮我。
提前致谢。
答案 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验证您的程序是否正常运行,而无需重新编译它们。然后,您可以做出最终决定。
乔治。