我有一大段代码分布在许多文件中,目前该代码正在使用普通的 malloc。
我希望实现 Jemalloc 以获得更好的性能,并且我还想使用 Jemalloc 的内存分析器来了解每个分配点在代码中如何发生以及具体位置在哪里。
我已经尝试了三个星期,请求您的帮助。
提前致谢。
在不添加前缀的情况下构建jemalloc
后,你将拥有一个重新实现了所有malloc
族函数的共享库。
假设:Linux环境
如果你的应用程序在单个终端中运行,可以使用LD_PRELOAD
环境变量,在运行应用程序之前预加载jemalloc.so
。类似这样:
export LD_PRELOAD=$LD_PRELOAD:/path/to/jemalloc-build/lib/jemalloc.so.1
为了使所有应用程序受到更改的影响,您可以在文件/etc/ld.so.preload
中添加一行路径指向您的库。(这个方法在基于Debian的系统中可以确定地使用,但在其他系统上也可能适用)
/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而无需重新编译它们。然后你可以做出最终决定。
George.