Memory 在现有大型代码中使用jemalloc

Memory 在现有大型代码中使用jemalloc,memory,malloc,profiler,Memory,Malloc,Profiler,我有一个庞大的代码分布在大量的文件中。此代码当前正在使用普通malloc 我想在其中实现Jemalloc以获得更好的性能,我还想使用Jemalloc的内存分析器来了解代码中的每个分配是如何发生的,以及在哪里发生的 我已经试了三个多星期了。请帮帮我 提前感谢。在您构建了没有任何前缀的jemalloc之后,您将拥有一个共享库,其中所有malloc系列函数都将重新实现 假设:Linux环境 如果应用程序在单个终端中运行,则可以在运行应用程序之前使用LD_PRELOADenvironment变量预加载j

我有一个庞大的代码分布在大量的文件中。此代码当前正在使用普通malloc

我想在其中实现Jemalloc以获得更好的性能,我还想使用Jemalloc的内存分析器来了解代码中的每个分配是如何发生的,以及在哪里发生的

我已经试了三个多星期了。请帮帮我


提前感谢。

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

假设:Linux环境

如果应用程序在单个终端中运行,则可以在运行应用程序之前使用
LD_PRELOAD
environment变量预加载
jemalloc.so
。比如:

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

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

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

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

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

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

me@mypc/root#
哪个jemalloc.sh

/usr/local/bin/jemalloc.sh

如果存在,您可以通过以下方式执行程序:

me@mypc/root#
jemalloc.sh您的程序您的程序参数&

您可以阅读
/usr/local/bin/jemalloc.sh
,以验证它是否使用了与所述IULIU类似的方法

me@mypc/root#
jemalloc config--help
将帮助您查看jemalloc是如何编译的,以及
me@mypc/root#
jemalloc config--version
将显示您的jemalloc版本

通过这种方式,您可以验证您的程序是否可以与jemalloc一起正常工作,而无需重新编译它们。然后你可以做出最后的决定


乔治。

你是如何安装jemalloc的?你是从哪里得到jemalloc的。那么。1?真的很久以前了,对不起。您需要编译Jemalloc。